*20 /BINDEC 5 /FOR PDP-12 /D.J.NICHOLS /UNIV.WISCONSIN / /SIGNED 24-BIT BINARY TO DECIMAL CONVERSION / /PLACE NUMBER TO BE CONVERTED IN: / BD5HI MOST SIGNIF. 11 BITS PLUS SIGN / BD5LO LEAST SIGNIFICANT 12 BITS /ENTER VIA: JMP BD5 / WITH IR 1 PRESET /DECIMAL 6-BIT ASCII CODE STORED VIA IR1 / RIGHT JUSTIFIED / LEADING ZEROES SUPPRESSED /USES IR 1, 2 ? 3 / BD5, LDA /ENTER HERE 0 STC K9BD5 /SAVE RETURN STC L9BD5 /CLEAR NON-BLANK FLAG ADD BD5HI /LOAD HIGH ORDER SCR I 1 /SIGN TO LINK ROL I 1 LZE I /MAKE NEGATIVE IF NECESSARY COM STC BD5HI ADD BD5LO LZE I /DO THE SAME TO THE LOW ORDER COM STC BD5LO ADD X9BD5 /LOAD " -" LZE I /GET CORRECT SIGN ROL 6 STA V9BD5 SET I 3 /SET POINTER FOR ADDENDS N9BD5-1 U9BD5, STH I 1 /STORE SIGN OR DIGIT SET I 2 /CLEAR ADDITION COUNTER 1777 LDA I 3 /PUT A POWER OF TEN INTO ADDER STC Q9BD5 LDA I 3 STC P9BD5 SAE 3 /END OF TABLE? JMP K9BD5+1 /NO: CONVERT THIS DIGIT ADD BD5LO /YES: LOAD REMAINING /UNITS DIGIT COM BSE I /MAKE ASCII 0060 STH I 1 /AND STORE IT K9BD5, JMP 0 /RETURN JMP M9BD5 /ADD THIS POWER OF TEN ONCE APO /DID IT FIT? JMP .-2 /YES: TRY AGAIN LDA 3 /NO:TAKE THE LAST ADDI- COM /TION BACK OUT STC P9BD5 ADD Q9BD5 COM STC Q9BD5 JMP M9BD5 CLR /CORRECT THE COUNTER COM LAM 2 STA I W9BD5, 0 ADM I L9BD5, 0 /NON-BLANK FLAG AZE I /ZERO DIGIT AND /NO PREVIOUS NON-BLANK? JMP X9BD5-1 /YES: MOVE SIGN OVER LDA /NO: STORE THIS DIGIT W9BD5 ADD K9BD5-2 /MAKE ASCII JMP U9BD5 LDH I /STORE A BLANK X9BD5, 4055 / " -" STH 1 LDA I /THEN STORE THE SIGN V9BD5, 0 /SIGN JMP U9BD5 / / DOUBLE WORD ADD M9BD5, CLR /CLEAR LINK LDA I /LOAD THE P9BD5, 0 /LEAST SIGNIF. ADDEND LAM I /ADD IT TO THE BD5LO, 0 /LEAST SIGNIF ACCUMULATOR LDA I /LOAD THE Q9BD5, 0 /MOST SIGNIF. ADDEND LAM I /ADD IT TO THE BD5HI, 0 /MOST SIGNIF.ACCUMULATOR STC T9BD5 /CARRY THRU LAM BD5LO STC T9BD5 LAM BD5HI XSK I 2 /COUNT JMP 0 /RETURN / /CONSTANTS--POWERS OF TEN N9BD5, 364 /1,000,000 1100 30 / 100,000 3240 2 / 10,000 3420 0 / 1,000 1750 0 / 100 144 0 / 10 12 T9BD5, 0 /TEMPORARY STORAGE 0 /END OF TABLE FLAG /END BINDEC 5 /