*20 /DECBIN 4 /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 / JMP DB4 / ERROR RETURN / NORMAL RETURN / /RETURNS WITH THE LO ORDER RESULT IN / THE ACC AND THE HI ORDER IN DB4HI /DECBIN 4 SEARCHES FOR THE QANDA / DELIMITERS 74 AND 34 /SET IR1 SOMEWHERE BEFORE THE / FIRST DELIMITER IN THE QANDA ANSWER /DECBIN 4 CONVERTS UNTIL THE / SECOND DELIMITER IS FOUND /USES IR 1-4 /NON-INTERRUPTABLE / DB4, SET 3 /SAVE RETURN 0 SET I 2 /CLEAR MINUS FLAG 1776 CLR STC DB4HI /CLEAR HI ORDER STC G9DB4 /CLEAR LO ORDER LDH I 1 /GET CHAR SAE I /IS IT FIRST DELIMITER ? 74 JMP .-3 /NO: NEXT CHAR LDA I 2 /YES: INDEX MINUS FLAG H9DB4, SET I 4 /SET POINTER FOR SEARCH 4\G9DB4+1 LDH I 1 /LOAD NEXT CH AZE /UNFILLED HALF WORD? SHD I 4 /BLANK? JMP H9DB4 /YES:IGNORE IT SHD I 4 /PLUS? JMP H9DB4 /YES:IGNORE IT SHD I 4 /COMMA? JMP H9DB4 /YES:IGNORE IT SHD I 4 /MINUS? JMP H9DB4-1 /YES:SET FLAG SHD I /SECOND DELIMITER ? 7400 /74? JMP .+4 SAE I 34 /34? JMP D9DB4 /NO:CONVERT CHAR LDA I 3 /YES: INDEX RETURN LDA I DB4HI, 0 /HI ORDER ACC. SCR I 1 JMP F9DB4 /COM IF NEEDED STC DB4HI ADD G9DB4 ROL 1 ROR I 1 JMP F9DB4 /COM LO IF NEEDED JMP 3 /RETURN TO CALLING PGM D9DB4, ADA I /IS IT A LEGAL DIGIT ? -71 APO I / <72 ? JMP 3 /NO: ERROR RTN ADD G9DB4+1 /+12 APO / >57 ? JMP 3 /NO: ERROR RTN LDH 1 /YES: RELOAD CHAR BCL I /MAKE BINARY 7760 STC E9DB4 /AND SAVE IT ADD DB4HI /LOAD HI MUL 4\G9DB4+1 / X NO. BASE AZE /OVERFLOW? JMP 3 /YES:ERROR RTN QAC /NO STC DB4HI /SAVE PARTIAL NEW HI ADD G9DB4 /LOAD LO MUL 4\G9DB4+1 / X NO. BASE ADM /ADD OVERFLOW TO HI DB4HI QAC ADM I /ADD NEW LOW TO THIS DIGIT E9DB4, 0 ROL I 1 ROR 1 STC G9DB4 /SAVE NEW LO LAM /ADD CARRY TO HI DB4HI APO /OVERFLOW? JMP 3 /YES:ERROR RTN JMP H9DB4 /NO: CONTINUE F9DB4, XSK 2 /COM RESULT IF NEEDED COM JMP 0 G9DB4, 0 /LO ORDER ACC. 12 /NUMBER BASE /CHAR CODES 4053 / " +" 5455 / ",-" /END DECBIN 4 /