.TITLE QUTR5S - PRINT A RADIX 50 STRING ; ; QUTB5S - OUTPUT A MULTIWORD STRING IN RADIX 50 ; QUTR5S - AS ABOVE WITH TRAILING BLANK SUPPRESSION ; ; .MCALL ENTER,LEAVE,TTYOUT ; ; ; SETUP: ENTER R1,R2,R3,R4,R5 MOV SP,R1 ;CREATE TEMPORARY AREA ON STACK MOV 16(SP),R5 ;(R1,R2,R3,R4,R5)+(R0)+(PC)+(LEN) MOV R5,R4 ;COMPUTE LENGTH (MAX)OF OUTPUT STRING ASL R4 ;2*LEN ADD R5,R4 ;3*LEN INC R4 ;ROUND UP TO NEXT WORD BIC #1,R4 ;.. SUB R4,SP ;LEAVE SPACE ON STACK MOV 20(R1),R4 ;(R1,R2,R3,R4,R5)+(R0)+(PC)+(LEN)+(ADDR) MOV R0,-(SP) ;SAVE RETURN ADDRESS MOV R1,R2 ;START OF BUFFER MOV R1,R3 ;FOR NON-BLANK POINTER ; 1$: MOV (R4)+,R0 ;CONVERT ONE WORD CALL QUT5TA ;.. SOB R5,1$ ;AND ON TO NEXT WORD RETURN ; ; QUTB5S::JSR R0,SETUP ;DO CONVERSION PRINT: SUB R1,R2 ;LENGTH OF STRING TTYOUT R1,R2 ;PRINT IT MOV R1,SP ;RESTORE STACK, FLUSHING BUFFER LEAVE ;RESTORE R1 THROUGH R5 MOV (SP)+,R0 ;AND R0 MOV (SP)+,2(SP) ;SQUEEZE ARGS OFF STACK TST (SP)+ ;.. RETURN ; QUTR5S::JSR R0,SETUP ;DO CONVERSION MOV R3,R2 ;USE NON BLANK POINTER BR PRINT ;AND PRINT STRING ; .END