.TITLE QUT5TA - RADIX 50 TO ASCII SUBROUTINE ; ; QUT5TA - SUBROUTINE FOR CONVERTING RADIX 50 TO ASCII ; ;INPUTS: ; R0 WORD TO CONVERT ; R2 POINTER TO OUTPUT STRING ; R3 (SEE OUTPUTS) ; ;OUTPUTS: ; R0 UNCHANGED ; R2 POINTS PAST STRING ; R3 POINTS BEYOND LAST NON-BLANK CHARACTER, IF ANY ; IF ALL BLANK, R3 IS PRESERVED FROM ENTRY ; .MCALL ENTER,LEAVE ; ; QUT5TA::ENTER R0,R4 MOV #3,R4 ;NUMBER OF CHARACTERS IN WORD CALL 1$ ;CONVERT WORD LEAVE RETURN ; 1$: ENTER R1 ;SAVE R1 MOV R0,R1 ;GET NUMBER TO CONVERT CLR R0 ;INTO DOUBLEWORD DIV #50,R0 ;FOR DIVIDE DEC R4 ;FINISHED? BEQ 2$ ;YES CALL 1$ ;NO, RECURSE FOR NEXT CHARACTER 2$: TST R1 ;CONVERT THIS CHARACTER BEQ 5$ ;BLANK MOV R2,R3 ;NOT BLANK, REMEMBER POSITION INC R3 ;POINT BEYOND NON-BLANK CHARACTER CMP #33,R1 ;MIDDLE BGT 4$ ;ALPHA BEQ 3$ ;DOLLAR ADD #22-11,R1 ;DIGIT, . OR / 3$: ADD #11-100,R1 ;DOLLAR 4$: ADD #100-40,R1 ;ALPHA 5$: ADD #40,R1 ;SPACE MOVB R1,(R2)+ ;STORE IT AWAY LEAVE ;RESTORE R1 RETURN ; ; .END