*20 /DECBIN 3 /FOR PDP-12 /D. J. NICHOLS /UNIV. WISCONSIN / /DECIMAL-TO-DOUBLE PRECISION BINARY /CONVERTS IN THE RANGE / -4,194,303 TO +4,194,303 / /CALLING SEQUENCE: /SET IR1 1/2 WORD BEFORE THE 1ST CHAR / JMP DB3 / ERROR RETURN / NORMAL RETURN /RETURNS WITH THE LO ORDER RESULT IN / THE ACC AND THE HI ORDER IN DB3HI /DECBIN 3 LOOKS AT 10 DECIMAL CHARACTERS /USES IR 1-5 /NON-INTERRUPTABLE / DB3, SET 3 /SAVE RETURN 0 SET I 5 /SET CH. COUNTER -13 / -(NO.CHS.TO CONVERT) - 1 SET I 2 /CLEAR MINUS FLAG 1776 CLR STC DB3HI /CLEAR HI ORDER STC G9DB3 /CLEAR LO ORDER LDA I 2 /INDEX MINUS FLAG B9DB3, XSK I 5 /ENOUGH CHS? JMP D9DB3 /NO LDA I 3 /YES: INDEX RETURN LDA I DB3HI, 0 /HI ORDER ACC. SCR I 1 JMP F9DB3 /COM IF NEEDED STC DB3HI ADD G9DB3 ROL 1 ROR I 1 JMP F9DB3 /COM LO IF NEEDED JMP 3 /RETURN TO CALLING PRGM D9DB3, SET I 4 /SET POINTER FOR SEARCH 4\H9DB3-1 LDH I 1 /LOAD NEXT CH SHD I 4 /BLANK? JMP B9DB3 /YES:IGNORE IT SHD I 4 /PLUS? JMP B9DB3 /YES:IGNORE IT SHD I 4 /COMMA? JMP B9DB3 /YES:IGNORE IT SHD I 4 /MINUS? JMP B9DB3-1 /YES:SET FLAG ADA I /IS IT A LEGAL DIGIT? -71 APO I / <72 ? JMP 3 /NO:ERROR RTN ADD G9DB3+1 /+12 APO / >57 ? JMP 3 /NO:ERROR RTN LDH 1 /ITS LEGAL: RELOAD CHAR BCL I /MAKE BINARY 7760 STC E9DB3 /AND SAVE IT ADD DB3HI /LOAD HI MUL 4\G9DB3+1 / X NO. BASE AZE /OVERFLOW? JMP 3 /YES: ERROR RTN QAC /NO STC DB3HI /SAVE PARTIAL NEW HI ADD G9DB3 /LOAD LO MUL 4\G9DB3+1 / X NO. BASE ADM /ADD OVERFLOW TO HI DB3HI QAC ADM I /ADD NEW LOW TO THIS DIGIT E9DB3, 0 ROL I 1 ROR 1 STC G9DB3 /SAVE NEW LO LAM /ADD CARRY TO HI DB3HI APO /OVERFLOW? JMP 3 /YES: ERROR RTN JMP B9DB3 /NO: CONTINUE F9DB3, XSK 2 /COM RESULT IF NEEDED COM JMP 0 G9DB3, 0 /LO ORDER ACC. 12 /NUMBER BASE /CHAR CODES H9DB3, 4053 / " +" 5455 / ",-" /END DECBIN 3 /