.TITLE BLKDRV .IDENT /V1.0/ .IF EQ DEBUG .PSECT BLKDRV,RO .IFF .PSECT BLKDRV,RW .ENDC ;+ ; MACHINE/SYSTEM - PDP-11/70 / IAS V3.0 ; AUTHOR - JOHN GUIDI ; DATE - 22-SEPTEMBER-80 ; RESIDENCE - LB:[?,?]BLKDRV.MAC ; LANGUAGE - MACRO-11 D1113 ; ; FILE CONTENTS: ; ROUTINE FUNCTION ; ------- ------------------------------------------ ; BLKDRV THIS IS THE DRIVER FOR THE $$$BLK UTILITY ; ;- .MCALL EXIT$S,CLOSE$,CSI$ CSI$ ; DEFINE CSI OFFSETS BLKDRV:: ;+ ; ROUTINE: BLKDRV ; ; EFFECT: THIS ROUTINE IS THE DRIVER FOR THE $$$BLK UTILITY. ; ; ROUTINES ; CALLED: 1. GETCML ; 2. OPNLST ; 3. OPNSRC ; 4. OPNSYS ; 5. FILWRK ; 6. NXTFIL ; 7. GETMAP ; 8. WRKREM ;- ; ; 1. OBTAIN THE COMMAND LINE, THEN OPEN THE UTILITY OUTPUT FILE. ; 1$: CALL GETCML ; OBTAIN THE COMMAND LINE BCS 999$ ; ON ERROR, OR EOF, EXIT CALL OPNLST ; OPEN THE LIST FILE BCS 1$ ; IF ERROR, TRY AGAIN ; ; 2. OPEN THE (NEXT) SORCE FILE AS THE UTILITY INPUT FILE, AND CLEAR THE ; WRKFLG BIT WRKMOR THUS INDICATING A NEW WORK BUFFER. ; 2$: CALL OPNSRC ; OPEN THE NEXT SOURCE FILE BCS 1$ ; IF ERROR TRY AGAIN BIC #WRKMOR,WRKFLG ; INITIALIZE WORK BUFFER FLAG. ; ; 3. OPEN THE FCS BITMAP STORAGE FILE, FILL UP WORK BUFFER AS MUCH AS ; POSSIBLE, THEN CLOSE FCS STORAGE BITMAP FILE, AND OPEN FCS INDEX ; FILE. THEN CLEAR THEN EXMFLG EXAMINATION FILE FLAG WORD. ; 10$: MOV #BITDSP,SYSPTR ; INDICATE FCS BITMAP STORAGE FILE CALL OPNSYS ; OPEN BITMAP STORAGE FILE BCS 999$ ; EXIT IF ERROR CALL FILWRK ; FILL UP A WORK BUFFER BCS 999$ ; EXIT IF ERROR TST NUMLBN ; ANY LBN'S IN WORK BUFFER? BEQ 60$ ; NO. GO SEE IF MULTIPLE SOURCE FILES ; WERE SPECIFIED. CLOSE$ #SYSFDB ; CLOSE BITMAP FILE MOV #INXDSP,SYSPTR ; SET SYSPTR -> INXDSP CALL OPNSYS ; OPEN FCS INDEX FILE BCS 999$ ; ON ERROR EXIT CLR EXMFLG ; CLEAR EXMFLG FLAG ; ; 4. SEE IF THERE ARE ANY MORE LBN'S IN THE WORK BUFFER, THEN GET THE ; NEXT FILE USING NXTFIL, THEN CALL GETMAP TO SEARCH THE WORK BUFFER ; FOR ANY LBN'S WHICH ARE ACCOUNTED FOR BY THE MAP RETRIEVAL POINTERS ; FOR THIS NEXT FILE. ; 20$: TST NUMLBN ; ANY LBN'S LEFT IN THE WORK BUFFER? BEQ 50$ ; NO. GO SEE IF MULTIPLE SOURCE FILES. CALL NXTFIL ; GET THE NEXT FILENAME BCS 999$ ; C-BIT SET - ERROR. BIT #EXMEND,EXMFLG ; DID NXTFIL ALREADY FIND LAST FILE? BNE 30$ ; YES. THEN WE'RE DONE WITH THE WORK ; BUFFER, EVEN THOUGH NUMLBN IS NOT 0. ; GO DISPLAY REAMINING ENTRIES IN THE ; WORK BUFFER. CALL GETMAP ; FOR THIS FILE, OBTAIN MAP RETRIEVAL ; POINTERS, AND CHECK AGAINST THE WORK ; BUFFER. BCS 999$ ; EXIT IF ERROR BR 20$ ; GO OBTAIN NEXT FILE NAME ; ; 5. DISPLAY ANY LBN'S LEFT IN THE WORK BUFFER AFTER ALL POSSIBLE FILE MAP ; RETRIEVAL POINTERS HAVE BEEN CHECKED. (THIS IS POSSIBLE) ; 30$: CALL WRKREM ; DISPLAY REMAINING LBN'S IN WRKBUF ; ; 6. DETERMINE WHETHER THE WORK BUFFER WAS PREMATURELY FILLED. IF THERE IS A ; POSSIBILITY OF MORE LBN'S, THEN GO BACK TO STEP 3. ; 50$: CLOSE$ #SYSFDB ; CLOSE FCS INDEX FILE BIT #WRKMOR,WRKFLG ; WAS WRKBUF PREMATURELY FILLED? BNE 10$ ; YES. GO GET NEXT WORK BUFFER. ; ; 7. DETERMINE IF MULTUPLE UTILITY SOURCE INPUT FILES WERE SPECIFIED. IF ; SO, GO BACK TO STEP 2. ; 60$: CLOSE$ #INPFDB ; CLOSE UTILITY INPUT FILE BITB #CS.MOR, ; ARE THERE MULTIPLE INPUT FILES? BNE 2$ ; YES. GO OPEN NEXT UTILITY INPUT FILE ; ; 8. WE HAVE FINISHED WITH THIS COMMAND LINE, GO REPROMPT BLK> AND OBTAIN ; THE NEXT COMMAND LINE. ; CLOSE$ #SYSFDB ; CLOSE SYSTEM FILE CLOSE$ #LSTFDB ; CLOSE UTILITY OUTPUT FILE BR 1$ ; GO OBTAIN NEXT COMMAND LINE. 999$: ; TARGET FOR UTILITY TERMINATION CLOSE$ #SYSFDB ; CLOSE SYSTEM FILE CLOSE$ #INPFDB ; CLOSE UTILITY INPUT FILE CLOSE$ #LSTFDB ; CLOSE UTILITY OUTPUT FILE EXIT$S ; EXIT .END BLKDRV