*20 /DECBIN 2 /FOR PDP-12 /D. J. NICHOLS /UNIV. WISCONSIN / /DECIMAL TO SINGLE-PRECISION BINARY / /CONVERTS DECIMAL NUMBERS IN ASCII CODE / FROM -4095 TO +4095 /RETURNS WITH BINARY IN ACCUMULATOR /CALLING SEQUENCE: / JMP DB2 / ERROR RETURN / NORMAL RETURN /SEARCHES FOR FIELD DELIMITERS 74 AND 34 /IR1 MAY BE SET ANYWHERE BEFORE / THE FIRST DELIMITER /DECBIN 1 LOOKS UNTIL THE / SECOND DELIMITER IS FOUND /USES IR1-3 /INTERRUPTABLE / DB2, SET 3 /SAVE RETURN 0 SET I 2 /MINUS FLAG 1777 LDH I 1 /GET CHARACTER SAE I /IS IT FIRST DELIMITER? B9DB2, 74 JMP .-3 /NO: LOAD NEXT CHAR CLR /YES: GO ON C9DB2, STC D9DB2 /SAVE RESULT LDH I 1 /LOAD NEXT CH SHD I /SECOND DELIMITER ? 7400 JMP .+4 /YES SAE I 34 JMP E9DB2 /NO: CONVERT IT LDA I 3 /YES: INDEX RETURN LDA I /LOAD RESULT D9DB2, 0 XSK 2 /MINUS? COM /YES JMP 3 /RETURN TO CALLING PGM E9DB2, SHD I /SPACE? 4000 JMP C9DB2+1 /YES: IGNORE IT SHD I /PLUS? 5300 JMP C9DB2+1 /YES: IGNORE IT AZE I /UNFILLED HALF WORD? JMP C9DB2+1 /YES: IGNORE IT SHD I /MINUS? 5500 JMP H9DB2 /YES: SET FLAG ADA I /IS IT A LEGAL DIGIT ? -71 APO I / <72 ? JMP 3 /NO: ERROR RTN ADD G9DB2 /+12 APO / >57 ? JMP 3 /NO: ERROR RTN LDH 1 /YES ITS LEGAL, GET CHAR BCL I /MAKE BINARY 7760 STC F9DB2 /SAVE IT ADD D9DB2 MUL / X NO. BASE 4\G9DB2 SCR 1 AZE /OVERFLOW? JMP 3 /YES: ERROR RTN QAC /NO: RETRIEVE IT ROL 1 QLZ ADD G9DB2+1 /+1 LAM I F9DB2, 0 LZE /OVERFLOW? JMP 3 /YES: ERROR RTN JMP C9DB2 /NO: CONTINUE G9DB2, 12 /NUMBER BASE 1 H9DB2, XSK I 2 /SET MINUS FLAG JMP C9DB2+1 /END DECBIN 2 /