.TITLE MR27.. STRING PROCEDURES IN MACRO .IDENT /MR27../ ; ; .PAGE .SBTTL . BINARY TO BINARY STRING CONVERSIONS ; R$BBIN:: ;CONVERT BINARY TO BINARY ASCII STRING ; ; ENTRY CONDITIONS ; R0 = BINARY VALUE WORD ENTRY +0 ; BYTE ENTRY +2 ; EXIT CONDITIONS ; R0 -> CONVERTED STRING ; BR 6$ ;WORD ENTRY ;BYTE ENTRY BIC #177400,R0 ;MASK VALUE DOWN TO 8 BITS MOV #8.,9$ ;INDICATE THIS IS A BYTE ENTRY BR 7$ ;ENTER COMMON SOFTWARE ; 6$: MOV #16.,9$ ;INDICATE THIS IS A WORD ENTRY 7$: SAVE R1,R3,R4 ;SAVE R1 R3 R4 ; MOV #55$,R4 ;HOLD START ADDRESS OF DATA AREA MOV (PC)+,R3 ;LOOP CHARACTER COUNTER PRESET 9$: .WORD 16. ;COUNT ; 10$: MOV R0,R1 ;HOLD VALUE BEING PROCESSED BIC #^C1,R1 ;CLEAR ALL BUT BOTTOM BIT ADD #'0,R1 ;CONVERT BCD TO ASCII MOVB R1,(R4)+ ;SAVE CHARACTER ASR R0 ;SHIFT CONTENTS OFF R0 1 PLACE RIGHT SOB R3,10$ ;LOOP N TIMES ; 20$: MOV #50$,R0 ;HOLD ADDRESS OF RESULT CHARACTER STRING CALL R$REVERSE ;SWITCH CHARACTERS BACK TO CORRECT ORDER 30$: UNSAVE R1,R3,R4 ;RESTORE REGISTERS RETURN ;RETURN TO CALLING PROGRAM ; ; DATA AREA .WORD 16. ;MAX NUMBER OF CHARACTERS ALLOWED 50$: .WORD 16. ;ACTUAL NUMBER OF CHARACTERS IN STRING 55$: .BYTE 0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0 .EVEN ;SET TO EVEN BOUNDRY ; .END ;