.TITLE GMCRBF .MCALL SUPER SUPER NOPOOL: .ASCII /ALARM--->NO POOL SPACE/ POOLEN=.-NOPOOL GMCRBF:: CLR R0 ; ASSUME NO ERROR CALL $SWSTK,GMCREX ; ENTER SYSTEM STATE MOV #84.,R1 ; BUFFER SIZE TO R1 CALL $ALOCB ; GET A BUFFER FROM POOL BCC 10$ ; BRANCH IF BUFFER AVAILABLE MOV #$HEADR,R0 ; GET USERS STACK INC 6(R0) ; SET HIS C-BIT RETURN ; RETURN TO USER STATE ; 10$: ; TIME TO GET UCB INTO R2 MOV $TKTCB,R2 ; R1-> OUR TCB MOV T.UCB(R2),R2 ; GET TI UCB ADDRESS 20$: MOV U.RED(R2),R2 ; FOLLOW THE CHAIN CMP U.RED(R2),R2 ; REDIRECTED ? BNE 20$ ; BR IF YES 30$: MOV R0,-(SP) ; SAVE BUFFER ADDRESS CLR (R0)+ ; CLEAR LINK WORD MOV R2,(R0)+ ; SET TI UCB ADDRESS MOV #80.,R1 ; SET NUMBER OF BYTES LEFT TO MOVE 35$: CMPB (R3),#7 ; IS THE NEXT CHAR A BELL ? BNE 36$ ; BRANCH IF NO MOVB #' ,(R0)+ ; OTHERWISE REPLACE IT WITH A SPACE TSTB (R3)+ ; AND BUMP PASS BELL BR 38$ ; SKIP TO COUNTER 36$: MOVB (R3)+,(R0)+ ; MOVE STRING TO MCR BUFFER 38$: DEC R1 ; COUNT DOWN LENTH BNE 35$ ; BR TILL DONE MOV (SP)+,R1 ; GET BUFFER ADDRESS BACK CALL $QMCRL ; QUEUE UP MCR COMMAND MOV $TKTCB,R1 ; GET POINTER TO OUR TCB BIC #T3.MCR,T.ST3(R1) ; INHIBIT MCR PROMT ON EXIT RETURN ; NORMAL EXIT, RETURN TO USER STATE GMCREX: BCC 10$ ; BR IF NO ERRORS PRINT #NOPOOL,#POOLEN 10$: RETURN .END