*20 /BINDEC 1 /FOR PDP-12 /D.J.NICHOLS /UNIV. WISCONSIN / /SIGNED 12-BIT BINARY TO DECIMAL CONVERSION / /ENTER VIA: JMP BD1 / WITH BINARY NUMBER IN ACCUMULATOR / AND IR 1 PRESET /DECIMAL 6-BIT ASCII CODE STORED VIA IR1 / LEADING ZEROES SUPPRESSED / RIGHT JUSTIFIED /NON-INTERRUPTABLE /USES IR 1-3 / BD1, SCR I 1 /SIGN TO LINK BIT ROL I 1 APO I /MAKE NEGATIVE COM STC N9BD1 /SAVE IT ADD 0 /SAVE RETURN STC P9BD1 LDA I /LOAD POSSIBLE SIGNS K9BD1, 5540 /"- " LZE /GET CORRECT SIGN ROR 6 STH I 1 /AND STORE IT SET I 2 /SET ADDEND POINTER Q9BD1-1 JMP M9BD1 /CONVERT A DIGIT AZE /IS IT A LEADING ZERO? JMP L9BD1 /NO ADD K9BD1 /YES:MOVE SIGN RIGHT 1 PLACE STH 1 /STORE A SPACE OVER THE SIGN LZE /GET THE CORRECT SIGN ROR 6 STH I 1 /AND STORE IT JMP .-10 /THEN CONTINUE CONVERTING L9BD1, ADD P9BD1-2 /MAKE ASCII STH I 1 /STORE A DIGIT JMP M9BD1 /CONVERT NEXT DIGIT JMP L9BD1 /AND STORE IT /LITTLE SUBROUTINE TO DO THE CONVERSION M9BD1, LDA /SAVE RETURN 0 STC P9BD1-4 SET I 3 /SET DIGIT COUNTER 1777 XSK I 2 /MOVE ADDEND POINTER ADD N9BD1 /LOAD THE VALUE XSK I 3 /BUMP COUNTER STA I /SAVE REMAINING PART N9BD1, 0 ADA 2 /TRIAL ADD APO /STILL NEGATIVE? JMP .-5 /YES:COUNT AND ADD AGAIN LDA /NO: GET THE COUNTER 3 SRO I /LAST DIGIT? 3567 JMP 0 /NO: BACK TO THE SUBROUTINE BSE I /YES:MAKE ASCII 0060 STH I 1 /STORE IT P9BD1, JMP 0 /AND RETURN TO CALLING PGM /ADDEND TABLE Q9BD1, 1750 144 12 1 /END BINDEC 1 /