.TITLE RLSTXT .IDENT /00/ .PSECT CODE,RO ; ; VERSION 00 ; ; TOM GETZINGER 30-DEC-79 ; ; THIS ROUTINE RELEASES TEXT FROM "FRSTXT" UP TO, BUT NOT INCLUDING, ; THE ENTRY POINTED TO BY R4 ; RLSTXT:: MOV R2,-(SP) ; SAVE R2 MOV R3,-(SP) ; SAVE R3 MOV FRSTXT,R3 ; R3 -> FIRST TEXT BEQ 30$ ; THERE IS NONE 10$: TST PASS ; IS THIS THE OUTPUT PASS? BEQ 20$ ; NO BIT #TF.REL,T.FLAG(R3) ; IS THE TEXT RELOCATED? BEQ 20$ ; NO MOV T.STR(R3),R2 ; YES, SO THERE IS A STRING TO RELEASE MOVB (R2),R1 ; GET THE LENGTH MOV #FREEHD,R0 CALL $RLCB ; FREE IT 20$: MOV R3,R2 MOV (R3),R3 ; POINT TO NEXT TEXT ENTRY MOV #T.LEN,R1 MOV #FREEHD,R0 CALL $RLCB ; FREE THE CURRENT TEXT ENTRY CMP R3,R4 ; ARE WE DONE? BNE 10$ ; NO MOV R4,FRSTXT ; YES, SET FIRST TEXT POINTER BNE 40$ ; IS THERE ANY TEXT LEFT? 30$: CLR LSTTXT ; NO, SO LAST TEXT POINTER = NULL 40$: MOV (SP)+,R3 ; RESTORE R3 MOV (SP)+,R2 ; RESTORE R2 RETURN ; AND WE'RE DONE .END