; FILE NAME : B I N O C T . M A C ; DATE : AUGUST 31, 1974 ; VERSION : 01.02 ; AUTHOR : JAMES STANFILL ; DEPARTMENT OF MEDICINE ; UNIVERSITY OF WASHINGTON ; ; REVISIONS : 01.02 4-MAY-76 J. STANFILL ; CORRECTION FOR RIGHT JUSTIFICATION ; .TITLE BINOCT ; ;+ ; SUBROUTINE TO PERFORM A SIGNED CONVERSION FROM BINARY ; TO OCTAL. THREE WORDS MUST BE ALLOCATED TO RECEIVE ; THE ASCII STRING. ; ; R3 = BINARY WORD TO BE CONVERTED ; R4 = ADDRESS OF ASCII STRING ; ; ;- BINOCT::MOV R2,-(SP) ;SAVE REGISTER USED MOVB #' ,R2 ;PUT "SPACE" IN R2 TST R3 ;NUMBER NEGATIVE? BPL 1$ ;NO--PUT "SPACE" ON STACK NEG R3 ;YES--TAKE 2' COMPLEMENT, MOVB #'-,R2 ;PUT "MINUS" IN R2, AND 1$: MOV R2,-(SP) ;PUSH SIGN ON STACK MOV #6,R2 4$: MOVB #' ,(R4)+ ;PUT SPACES INTO ASCII STRING SOB R2,4$ ;AND MOVE PTR TO END 2$: MOV R3,-(SP) ;SAVE NUMBER (OR REMAINDER) BIC #177770,R3 ;MASK OUT UPPER BITS ADD #60,R3 ;CONVERT TO ASCII MOVB R3,-(R4) ;AND STORE THE CHARACTER MOV (SP)+,R3 ;RESTORE NUMBER (OR REMAINDER) ASH #-3,R3 ;MOVE TO NEXT CHARACTER BNE 2$ ;IF MORE CHARACTERS, GO BACK MOV (SP)+,R2 ;RETRIEVE SIGN (OR SPACE) MOVB R2,-(R4) ;APPEND TO ASCII STRING MOV (SP)+,R2 ;RESTORE REGISTER USED RTS PC ; .END