; FILE NAME : R A D A S C . M A C ; DATE : MARCH 25, 1974 ; VERSION : 01.01 ; AUTHOR : JAMES STANFILL ; DEPARTMENT OF MEDICINE ; UNIVERSITY OF WASHINGTON ; ; .TITLE RADASC .GLOBL RADASC ; ;+ ; SUBROUTINE TO CONVERT RAD50 WORDS TO ASCII STRINGS ; WHERE RADIX 50 VALUE = ((C1*50)+C2*50)+C3 ; ; CALLING SEQUENCE : ; ; R0 = ADDRESS OF RAD50 BUFFER ; R1 = ADDRESS OF ASCII BUFFER ; R5 = NUMBER OF BYTES TO BE GENERATED ; ;- ; RADASC: MOV R1,-(SP) ;SAVE REGISTERS MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) MOV R5,-(SP) 1$: CLR R2 MOV #3,R4 ;3 BYTES/WORD MOV (R0)+,R3 ;GET RAD50 WORD 2$: DIV #50,R2 ;A CHARACTER IS IN REMAINDER 3$: TST R3 ;IS IT A SPACE? BEQ 4$ ;YES CMP #50,R3 ;COULD STILL BE A SPACE? BNE 5$ ;NO--CONTINUE 4$: MOV #40,R3 ;YES--SPACE=40 BR 10$ 5$: CMP #32,R3 ;IS IT A NUMBER? BPL 7$ ;NO--CONTINUE CMP #33,R3 BNE 6$ ;NO--CONTINUE ADD #-11,R3 ;YES--ADJUST 6$: ADD #-56,R3 ;PUT INTO RANGE 7$: ADD #100,R3 ;CONVERT TO 7-BIT 10$: MOV R3,-(SP) ;ASCII AND SAVE ON STACK DEC R5 ;BUMP POINTER MOV R2,R3 CLR R2 DEC R4 ;HAVE WE DONE A WORD? BEQ 11$ ;YES--GO STORE IT CMP #50,R3 ;ENOUGH LEFT FOR A DIVIDE? BLE 2$ ;YES BR 3$ 11$: MOV #3,R2 12$: MOV (SP)+,R4 ;NOW, WE'VE DONE A WORD MOVB R4,(R1)+ ;SO RETRIEVE FROM STACK SOB R2,12$ ;AND STORE IN BUFFER TST R5 ;DONE? BNE 1$ ;NO--DO ANOTHER WORD 22$: MOV (SP)+,R5 ;RESTORE REGISTERS MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 RTS PC ;YES--RETURN ; .END ; ;