.TITLE WRMAC .IDENT /V01.2/ ; ; WRMAC - WRITE TO MACRO FILE ; ; Modifications Record: ; ===================== ; V01.2 3-Sep-85 CJD ; Call $ENTAB before output to compress spaces to tabs. ; Don't output blank lines in header as single-spaces (like silly old EDI). .MCALL PUT$ ; .PSECT WR$MAC::MOV #ERR9,MESNO TST LNCNT ; NEED TO OUTPUT HEADER? BEQ 4$ ; NO CLR LNCNT ; YES MOV #MACFDB,R0 ; RESET MOV #HEADER,F.NRBD+2(R0) ; O MOV #HDRSIZ,F.NRBD(R0) PUT$ R0 BCS 5$ ;(FAILE CLR F.NRBD(R0) ; Zero for blank line ;V01.2 PUT$ R0 BCS 5$ PUT$ R0 BCS 5$ 4$: MOV R1,-(SP) ; Save registers ;V01.2 MOV R2,-(SP) ;V01.2 ; Compress line, by converting spaces to tabs, from MACLIN to the ;V01.2 ; (now unused) OBJLIN. Note that we mustn't overwrite MACLIN, as ;V01.2 ; code in ORCP3 may re-use it when splitting up .BLKB's. ;V01.2 MOV #MACLIN,R0 ; Get input buffer address ;V01.2 MOV #OBJLIN,R1 ; and output ;V01.2 MOV R1,MACFDB+F.NRBD+2 ; Set up buffer ptr for later ;V01.2 MOV MACLEN,R2 ; Get length ;V01.2 SUB R0,R2 ;V01.2 JSR PC,$ENTAB ; En-tab ;V01.2 MOV #MACFDB,R0 MOV R2,F.NRBD(R0) ; Set new length ;V01.2 MOV (SP)+,R2 ; Finished with registers ;V01.2 MOV (SP)+,R1 ;V01.2 PUT$ R0 BCC 6$ 5$: JMP MOCALL ; TELL U 6$: RTS PC ; .END