.TITLE SDCLST LISTING PROCESSOR .SBTTL LSD SYMBOL DICTIONARY COMPARITOR ; ; THIS SUBROUTINE CONTROLS THE LISTING OUTPUT. ; ; SYSTEM MACRO DEFINITIONS ; .MCALL PUT$ ; ; ; UNIQUE DATA AND BUFFERS ; .PSECT SDCLST,D,GBL ; ; ; INPUT STRING LISTS ; .NLIST BEX ; TAB = < 'I & ^O37 > ; TAB CHARACTER CODE HTAB: .ASCII ; TAB TABLE NULL: 0 ; NULL CHARACTER CODE ARGLST: .BLKW 20. ; ARGUMENT LIST TITISA: .ASCIZ /%F%2ASYMBOL DICTIONARY COMPARITOR%A%Y%APAGE: %D/ ; .EVEN ; SUMISA: .ASCIZ /%ASTATISTICAL SUMMARY:/ SMRISA: .ASCIZ /%2ARECORDS PROCESSED - LSD FILE #1: %D%ALSD FILE #2: %D/ SM1ISA: .ASCIZ /%2ADEFINITION ADDS: %D%ACHANGES: %D%ADELETES: %D/ SM2ISA: .ASCIZ /%A%VA/ PAGBUF: .BLKB 132. ; LINE BUFFER .LIST BEX ; .PAGE ; .PSECT ; CODE SECTION ; ; OUTPUT LISTING LINE ; SDCLIN:: ; GLOBAL ENTRY CALL $SAVAL ; SAVE ALL REGISTERS TST LSTFDB+F.BDB ; IS LISTING FILE OPEN BEQ 1$ ; IF NO , EXIT CALL SDCTOF ; CHECK FOR TOP-OF-FORM INC LINE ; UPDATE LINE COUNT PUT$ #LSTFDB,#LSTBUF,CIMSIZ ; OUTPUT LINE BCC 1$ ; BRANCH IF NO ERROR JMP ERROR ; ERROR 1$: RETURN ; EXIT ; ; OUTPUT BLANK LINE ; SDCBLN:: ; GLOBAL ENTRY CALL $SAVAL ; SAVE ALL REGISTERS CALL SDCTOF ; CHECK FOR TOP-OF-FORM BR OUTBL2 ; OUTBLN: ; CALL $SAVAL ; SAVE ALL REGISTERS OUTBL2: ; TST LSTFDB+F.BDB ; IS LISTING FILE OPEN BEQ 1$ ; IF NO , EXIT INC LINE ; UPDATE LINE COUNT PUT$ #LSTFDB,#NULL,#1 ; OUTPUT BLANK LINE BCC 1$ ; BRANCH IF NO ERROR JMP ERROR ; BRANCH IF ERROR 1$: RETURN ; EXIT ; ; TOP OF FORM PROCESSING ; SDCTOF:: ; GLOBAL ENTRY CALL $SAVAL ; SAVE ALL REGISTERS TST LSTFDB+F.BDB ; IS LISTING FILE OPEN BEQ 2$ ; IF NO , EXIT CMP LINE,MAXLIN ; TIME TO OUTPUT NEW PAGE BLE 1$ ; BRANCH IF NO BIS #PAG.SW,SWOPT ; SET NEW PAGE REQUIRED FLAG 1$: BIT #PAG.SW,SWOPT ; IS NEW PAGE SELECTED BNE OUTTIT ; IF YES OUTPUT TITLE 2$: JMP EXIT ; IF NO , EXIT ; ; OUTPUT TITLE ; OUTTIT: CLR LINE ; RESET LINE COUNT BIC #PAG.SW,SWOPT ; RESET USER PAGE SELECTED INC PAGE ; UPDATE PAGE NUMBER MOV #TITISA,R1 ; POINT TO INPUT STRING ADDRESS MOV #ARGLST,R2 ; POINT TO THE ARGUMENT LIST MOV R2,R3 ; COPY MOV #HTAB,(R3)+ ; TABS MOV #HTAB,(R3)+ ; TABS MOV #DATTIM,R4 ; SET UP DATE AND TIME MOV (R4)+,(R3)+ ; MOV (R4)+,(R3)+ ; MOV (R4)+,(R3)+ ; MOV #HTAB,(R3)+ ; TABS MOV PAGE,(R3)+ ; SET UP PAGE NUMBER CALL OUTLIN ; OUTPUT THE LINE CALL OUTBLN ; OUTPUT BLANK LINE BR EXIT ; GO EXIT .PAGE ; ; ; SUMMARY PROCESSING ; SDCSUM:: ; GLOBAL ENTRY CALL $SAVAL ; SAVE ALL REGISTERS TST LSTFDB+F.BDB ; IS LISTING FILE OPEN BEQ EXIT ; IF NO , EXIT BIS #PAG.SW,SWOPT ; SET NEW PAGE REQUIRED FLAG CALL SDCTOF ; OUTPUT NEW PAGE MOV #SUMISA,R1 ; POINT TO INPUT STRING ADDRESS MOV #ARGLST,R2 ; POINT TO THE ARGUMENT LIST MOV #HTAB,(R2) ; TABS CALL OUTLIN ; OUTPUT THE LINE CALL OUTBLN ; OUTPUT BLANK LINE MOV #SMRISA,R1 ; POINT TO INPUT STRING ADDRESS MOV #ARGLST,R2 ; POINT TO THE ARGUMENT LIST MOV R2,R3 ; COPY MOV #HTAB,(R3)+ ; TABS MOV LSDRCD,(R3)+ ; TOTAL RECORDS FOR LSD FILE #1 BLE 1$ ; DEC -2(R3) ; SUBTRACT ONE FOR END SYMBOL 1$: MOV #HTAB,(R3)+ ; TABS MOV LSDRCD+2,(R3)+ ; TOTAL RECORDS FOR LSD FILE #2 BLE 2$ ; DEC -2(R3) ; SUBTRACT ONE FOR END SYMBOL 2$: CALL OUTLIN ; OUTPUT THE LINE CALL OUTBLN ; OUTPUT BLANK LINE MOV #SM1ISA,R1 ; POINT TO INPUT STRING ADDRESS MOV #ARGLST,R2 ; POINT TO THE ARGUMENT LIST MOV R2,R3 ; COPY MOV #HTAB,(R3)+ ; TABS MOV TOTADD,(R3)+ ; TOTAL ADDS MOV #HTAB,(R3)+ ; TABS MOV TOTCHG,(R3)+ ; TOTAL ADDS MOV #HTAB,(R3)+ ; TABS MOV TOTDEL,(R3)+ ; TOTAL ADDS CALL OUTLIN ; OUTPUT THE LINE CALL OUTBLN ; OUTPUT BLANK LINE MOV #SM2ISA,R1 ; POINT TO INPUT STRING ADDRESS MOV #ARGLST,R2 ; POINT TO THE ARGUMENT LIST MOV R2,R3 ; COPY MOV #HTAB,(R3)+ ; TABS MOV CSIBLK+C.CMLD,(R3)+ ; COMMAND LINE SIZE MOV CSIBLK+C.CMLD+2,(R3)+ ; COMMAND LINE BUFFER CALL OUTLIN ; OUTPUT THE LINE CALL OUTBLN ; OUTPUT BLANK LINE BR EXIT ; EXIT .PAGE ; ; ; OUTPUT LINE ; OUTLIN: ; MOV #PAGBUF,R0 ; POINT TO PAGE BUFFER CALL $EDMSG ; EDIT MESSAGE INC LINE ; UPDATE LINE COUNT PUT$ #LSTFDB,#PAGBUF,R1 ; OUTPUT LINE BCC EXIT ; BRANCH IF NO ERROR TST (SP)+ ; CLEAN STACK ERROR: JMP SDCERR ; ERROR ; ; OUTLINE OR PROGRAM EXIT ; EXIT: CLC ; RESET C-BIT RETURN ; EXIT .END ;