*20 /BINDEC 8 /FOR PDP-12 /D.J.NICHOLS /UNIV. WISCONSIN / /POSITIVE ONLY 23-BIT BINARY TO DECIMAL CONVERSION /FOR NUMBERS LESS THAN OR EQUAL TO 3777 7777 / /ENTER VIA: JMP BD8 / WITH IR 1 PRESET / AND NUMBER TO BE CONVERTED IN LOCATIONS: / BD8HI MOST SIGNIFICANT BITS / BD8LO LEAST SIGNIFICANT 12 BITS /DECIMAL 6-BIT ASCII CODE STORED VIA IR1 / RIGHT JUSTIFIED / LEADING ZEROES SUPPRESSED /USES IR 1, 2, ? 3 / BD8, LDA 0 STC K9BD8 /SAVE RETURN STC L9BD8 /CLEAR NON-BLANK FLAG ADD BD8LO /COMPLEMENT NUMBER COM STC BD8LO ADD BD8HI COM STC BD8HI SET I 3 /SET POINTER FOR ADDENDS N9BD8-1 U9BD8, SET I 2 /CLEAR SUBTRACT COUNTER 1777 LDA I 3 /PUT A POWER OF TEN INTO ADDER STC Q9BD8 LDA I 3 STC P9BD8 SAE 3 /END OF TABLE? JMP K9BD8+1 /NO:CONVERT THIS DIGIT ADD BD8LO /LOAD REMAINING UNITS DIGIT COM ADD L9BD8-2 /MAKE ASCII STH I 1 /AND STORE IT K9BD8, JMP 0 /RETURN JMP M9BD8 /ADD THIS POWER OF TEN ONCE APO /DID IT FIT? JMP .-2 /YES: TRY AGAIN LDA 3 /NO:TAKE LAST ADDITION BACK OUT COM STC P9BD8 ADD Q9BD8 COM STC Q9BD8 JMP M9BD8 CLR /CORRECT THE COUNTER COM LAM 2 ADD L9BD8-2 /MAKE ASCII STH I 1 /STORE IT BCL I 0060 ADM I L9BD8, 0 /NON-BLANK FLAG AZE /PREVIOUS NON-BLANK? JMP U9BD8 /GO TO NEXT LOWER POWR OF TEN LDH I /NO:CHANGE THIS ZERO TO A SPACE 4040 / " " STH 1 JMP U9BD8 / /DOUBLE WORD ADD M9BD8, CLR /CLEAR LINK LDA I /LOAD THE P9BD8, 0 /LEAST SIGNIF. ADDEND LAM I /ADD IT TO THE LEAST BD8LO, 0 /SIGNIF. ACCUMULATOR LDA I /LOAD THE Q9BD8, 0 /MOST SIGNIFICANT ADDEND LAM I /ADD IT TO THE MOST BD8HI, 0 /SIGNIF. ACCUMULATOR STC T9BD8 /CARRY THRU LAM BD8LO STC T9BD8 LAM BD8HI XSK I 2 /COUNT JMP 0 /RETURN / /CONSTANTS--POWERS OF TEN N9BD8, 364 /1,000,000 1100 30 / 100,000 3240 2 / 10,000 3420 0 / 1,000 1750 0 / 100 144 0 / 10 12 T9BD8, 0 /TEMPORARY STORAGE 0 /END OF TABLE FLAG /END BINDEC 8 /