// CONVERSION ROUTINES / / IVAL=IFIXR(FPAR) / / SAME AS FIX, ONLY WITH ROUNDING. / / "FIXR" ERROR IF ABS(FPAR).GE.2047.5 /---------- / / FVAL=F4096(IPAR) / / FLOATS 'IPAR' SO IT HAS VALUE FROM 0-4096. /---------- / / IVAL=I4096(FPAR) / / 'FIX'ES FPAR TO AN INTEGER, MODULO 4095. / E.G. 2047. -> 2047 3000. -> -1096 -3000. -> 1096 /---------- ENTRY F4096 ENTRY I4096 ENTRY IFIXR OPDEF TADI 1400 ABSYM MINUS2 7344 /CLA CLL CMA RAL / **** PAGE 0 LOCATIONS **** ABSYM ACX 125 /EXPONENT OF NUMBER. ABSYM ACHI 126 /HIGH ORDER WORD. ABSYM ACMI 127 /MIDDLE ORDER WORD. ABSYM SKPPOS 130 /-1 IF SIGN +, -2 IF -. ABSYM CTR 131 /COUNTER FOR SHIFTS. ABSYM ADDR 132 /ADDR POINTER FOR PARA. LAP /THIS SHOULD FIT ON 1 PAGE!!!!!!! F4096, BLOCK 2 ///////// F4096(IPAR) TAD F4096 DCA FCDF1 FCDF1, HLT TADI F4096# DCA FCDF2 INC F4096# TADI F4096# DCA ADDR INC F4096# FCDF2, HLT TADI ADDR JMS JUSTFY DCA TRICL /ZERO OUT LOWER ORDER WORD. CALL 1,FSB /ALSO NORMALIZES. ARG TRICK RETRN F4096 TRICK, 2335 0000 TRICL, 0000 I4096, BLOCK 2 //////// I4096(FPAR) TAD I4096 DCA IARG TAD I4096# DCA IARG# INC I4096# INC I4096# CALL 1,IFAD IARG, ARG IARG JMS JUSTFY TAD ACL CALL 0,CLEAR RETRN I4096 JUSTFY, 0 DCA TRICL CALL 1,FAD ARG TRICK JMP I JUSTFY IFXERR, CALL 1,ERROR ARG IFIXM CLA CMA CLL RAR /AC=2047. JMP CHKSGN IFIXM, 4611;3022 / "FIXR" (NON-FATAL) IFIXR, BLOCK 2 //////// IFIXR(FPAR) TAD IFIXR DCA CDFA CDFA, HLT TADI IFIXR# DCA CDFB INC IFIXR# TADI IFIXR# DCA ADDR INC IFIXR# CDFB, HLT TADI ADDR DCA ACHI INC ADDR TADI ADDR DCA ACMI MINUS2 DCA SKPPOS TAD ACHI SNA JMP IFIXED /0. RETURN NOW. SMA INC SKPPOS /SET SKPPOS CORRECTLY. AND (3770 CLL RTR;RAR /RIGHT JUSTIFY. DCA ACX TAD ACX TAD (-200 SPA CLA JMP IFIXED /EXPON < 0. RETURN 0. TAD ACX TAD (-214 SMA JMP IFXERR DCA CTR TAD ACMI AND (7774 DCA ACMI TAD ACHI AND (7 CLL RAR TAD ACMI RTR; RAR /SHIFT IN THE THREE BITS. LOOP, CLL RAR /RIGHT SHIFT POS. NUM. ISZ CTR JMP LOOP SZL /IS REMAINDER BIT SET (.LE. .5)? IAC /YES. ROUND UP NUMBER. SPA /CHECK FOR N>2047.5 JMP IFXERR /YES. TUT-TUT. CHKSGN, ISZ SKPPOS /CHANGE SIGN? CIA /YES. IFIXED, RETRN IFIXR END