.TITLE BCDASC .GLOBL BCDASC ;CALL BCDASC(ADDR,BYTECOUNT) TO CONVERT BCD ARRAY ;TO ASCII. ASSUMES 6 BITS PACKED PER CHAR. ; ;IBM 7090 BCD TAPE CODES ASCII: .ASCII " 1234567890=-" ;0-14 .ASCII " \STUVWXYZ"<15> ;15-32 .ASCII ",( -JKLMNOPQR@$* &";33-60 .ASCII "ABCDEFGHI#" ;61-72 (# INSTEAD OF NULL) .ASCII ".) " ;73-77 .EVEN ;CDC 7600 DISPLAY CODES ;ASCII: .ASCII "ABCDEFGHIJ" ; .ASCII "KLMNOPQRST" ; .ASCII "UVWXYZ0123" ; .ASCII "456789+-*/" ; .ASCII "()$= ,.?[]" ; .ASCII "%??????<>?" ; .ASCII "??;?" ; .EVEN BCDASC: MOV 2(R5),R0 ;ADDRESS MOV @4(R5),R1 ;BYTECOUNT BGT 1$ ;CHECK POSITIVE RTS PC 1$: MOVB (R0),R2 ;GET A BYTE BIC #^C77,R2 ;ZAP ALL BUT 6 BITS MOVB ASCII(R2),(R0)+ ;STORE RESULT DEC R1 BGT 1$ ;LOOP OVER WHOLE ARRAY. .IF NDF,NTRC$ MOV 2(R5),R0 MOV @4(R5),R1 ;BYTECOUNT ;CHOP OFF ALL AFTER THE C.R. 2$: CMPB (R0)+,#15 ;CR? BEQ 3$ ;IF SO SPACE FILL REST DEC R1 BGT 2$ ;ELSE LOOK MORE 3$: DEC R1 ;SEE IF OK TO COUNT DOWN 1 MRE BLE 4$ 5$: MOVB #40,(R0)+ ;FILL IN SPACES DEC R1 BGT 5$ 4$: .ENDC RTS PC .END