.TITLE QUTR50 - OUTPUT A WORD IN RADIX 50 ; ; QUTB50 - OUTPUT ONE WORD IN RADIX 50 ; QUTR50 - OUTPUT ONE WORD IN RADIX 50 WITH TRAILING BLANKS ELIMINATED ; ;CALL: ; MOV WORD,-(SP) ; CALL QUTR50 OR QUTB50 ; ..ARGUMENT IS POPPED OFF STACK ; ; .MCALL ENTER,LEAVE .MCALL TTYOUT ; ; ; THE FOLLOWING ROUTINE IS USED TO SAVE REGISTERS ; AND PERFORM THE RADIX 50 CONVERSION. ; RETURN IS MADE WITH R2 AND R3 SET UP AS RETURNED ; BY QUT5TA ; SETUP: ENTER R1,R2,R3 ;SAVE REGISTERS (R0 SAVED BY CALL) MOV SP,R1 ;CREATE WORKAREA ON STACK SUB #4,SP ;ENOUGH FOR 3 CHARACTERS MOV R0,-(SP) ;SAVE RETURN ADDRESS MOV R1,R2 ;START OF BUFFER MOV R1,R3 ;FOR NON-BLANK POINTER AS WELL MOV 20(SP),R0 ;(PC)+4+(R1,R2,R3)+(R0)+(PC)+(WORD) CALL QUT5TA ;CONVERT TO RADIX 50 RETURN ; ; QUTB50::JSR R0,SETUP ;START THINGS GOING PRINT: SUB R1,R2 ;LENGTH OF CONVERTED STRING TTYOUT R1,R2 ;OUTPUT IT MOV R1,SP ;FLUSH BUFFER FROM STACK LEAVE ;RESTORE REGISTERS MOV (SP)+,R0 ;NOT FORGETTING R0 MOV (SP)+,(SP) ;COMPRESS ARG OUT OF STACK RETURN ; ; QUTR50::JSR R0,SETUP ;TRAILING BLANK ELIMINATION MOV R3,R2 ;R3 POINTS AFTER LAST NON-BLANK BR PRINT ;AND PRINT IT ; ; .END