.TITLE TXT3 .IDENT /01/ .PSECT CODE,RO ; ; VERSION 01 ; ; TOM GETZINGER 04-SEP-80 ; ; THIS MODULE PROCESSES TXT RECORDS IN PASS3 ; .MCALL PUT$S TXT3:: CMP (R3)+,CRNADR ; ARE WE AT THE RIGHT ADDRESS? BEQ 10$ ; YES CALL DASM3 ; NO, DIASSEMBLE PREVIOUS TEXT CALL DMPTXT ; DUMP REMAINING TEXT MOV F.NRBD+2+FDBOUT,R5 ; GET RECORD ADDRESS MOV #.EQ.P,R0 ; APPEND " .=.+" CALL APPEND MOV -2(R3),R0 ; GET NEW CURRENT ADDRESS SUB CRNADR,R0 ; CALCULATE ADDRESS DIFFERENCE MOV -2(R3),CRNADR ; SETUP NEW CURRENT ADDRESS CALL ADDOCT ; ADD DIFFERENCE IN OCTAL SUB F.NRBD+2+FDBOUT,R5 ; CALCULATE RECORD LENGTH PUT$S #FDBOUT,,R5 ; OUTPUT THE RECORD BR 15$ 10$: CALL DASM3 ; DISASSEMBLE ANY PREVIOUS TEXT 15$: MOV CRNADR,LSTADR ; SETUP LAST LOAD ADDRESS SUB #4,LSTADR SUB #2,R4 ; ANY TEXT? BEQ 50$ ; NO BIT #1,CRNADR ; YES, DOES IT START ON AN ODD ADDRESS? BEQ 30$ ; NO MOV LSTTXT,R1 ; ANY TEXT? BEQ 20$ ; NO BIT #TF.REL,T.FLAG(R1) ; YES, IS THE TEXT RELOCATED? BNE 20$ ; YES BIC #TF.BYT,T.FLAG(R1) ; NO, IT NOW HAS A FULL WORD MOVB (R3)+,T.VAL+1(R1) ; SAVE VALUE INC CRNADR ; INCREMENT CURRENT ADDRESS DEC R4 ; ANY TEXT LEFT? BEQ 50$ ; NO BR 30$ ; YES, GO PROCESS IT 20$: MOV #1,R5 ; SET BYTE FLAG CALL ADDTXT ; ADD THE BYTE BEQ 50$ ; THAT'S ALL THE TEXT 30$: MOV #2,R5 ; SET WORD FLAG CMP R4,#1 ; IS THERE ONLY 1 MORE BYTE LEFT? BNE 40$ ; NO DEC R5 ; YES, SWITCH TO BYTE MODE 40$: CALL ADDTXT ; ADD THE TEXT BNE 30$ ; CONTINUE UNTIL DONE 50$: RETURN ; THAT'S ALL .END