.TITLE CVL2S ;.MACRO .CVL2S L,S ;CONVERTS LONG INTEGER L TO STRING S, USING BASE 2 .GLOBL .CVL2S S2: .BLKW 1 ;ADDRESS OF OUTPUT STRING S LL2: .BLKW 2 ;THE LONG INTEGER .CVL2S: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) MOV LL2,R0 MOV LL2+2,R1 MOV #32.,R2 ;THERE WILL BE 32. BINARY DIGITS MOV S2,R4 ADD #32.,R4 ;R4=POINTER TO JUST BEYOND END OF STRING CLRB (R4) ;ZERO TERMINATES STRING LOOP32: MOV R1,R3 ;GET RIGHTMOST BIT BIC #177776,R3 ADD #60,R3 ;CONVERT TO ASCII MOVB R3,-(R4) ASHC #-1,R0 SOB R2,LOOP32 MOV S2,R4 ;REMOVE LEADING ZEROES MOV #31.,R2 ;LEAVE THE 32ND ZERO (IF IT EXISTS) LOOPZZ: CMPB (R4),#60 ;ZERO=60 BNE VALEQ MOVB #40,(R4)+ ;SPACE=40 SOB R2,LOOPZZ VALEQ: MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 RETURN .END