File: BCDBIN.RA of Disk: Disks/MyPDP/m8-backup-rka1-rkb1
(Source file text)
/BCD TO BINARY CONVERSION - 6-DIGIT /BINARY TO BCD CONVERSION - 6-DIGIT / / / VERSION 40A 12-SEP-80 WVDM / / / / IVAL=KBCD2B(24-BIT BCD MANTISSA) / / 24-BIT BCD MANTISSA=KB2BCD(IVAL) / SECT8 KBCD2B ENTRY KB2BCD / BSW=7002 MQL=7421 MQA=7501 / BASE 0 INDEX 0 JSA SETUP /USUAL STUFF FSTA# XR1 /STORE ARG HERE TRAP4 SBCD2B /CONVERT LOW ORDER XTA 1 /LOW ORDER BINARY RESULT FSTA 3 FLDA# XR1 FSTA# XR2 /PUT HIGH ORDER IN PLACE TRAP4 SBCD2B /CONVERT HIGH ORDER XTA 1 FMUL P1000 /HIGH ORDER * 1000 FADD 3 / + LOW ORDER IN FAC GOBAK, JA . /RTN TO CALLER KB2BCD, JSA SETUP /BINARY TO BCD ENTRY JLT ERROR /ONLY POSITIVE NUMBERS FDIV P1000 /ISOLATE HIGH ORDER FSUB P1000 /TOO LARGE ? JGE ERROR /YES FADD P1000 /RESTORE HIGH ORDER ATX 4 /TO SCRATCH XR TRAP4 SB2BCD /SINGLE PREC BINARY TO BCD XTA 4 /HI AGAIN FMUL P1000 FNEG SMALL, FADD% 3 /THAT'S LOW ORDER ATX 4 /INTEGERIZE TRAP4 SB2BCD /CONVERT LOW ORDER FLDA# XR0 /LOAD UNNORMALIZED BCD VALUE JA GOBAK EXTERN #ARGER ERROR, TRAP4 #ARGER TEMP, SBCD2B, 0 TAD XR3 /GET ARG: A*400+B*20+C AND P7400 /A*400 CLL RAR /A*200 DCA XR4 TAD XR4 CLL RTR /A*40 TAD XR4 /A*240 TAD XR3 /A*640+B*20+C AND P7760 /A*640+B*20 CLL RTR /A*150+B*4 DCA XR4 TAD XR4 CLL RAR /A*64+B*2 TAD XR4 /A*234+B*6 CIA /-A*234-B*6 TAD XR3 /A*144+B*12+C RIGHT ? DCA XR1 /STORE RESULT CIF CDF 0 JMP% SBCD2B SB2BCD, 0 TAD XR2 /SAVE OLD RESULT DCA XR1 /IN HORD TAD XR4 DCA XR3 /SET INITIAL VALUE TAD BINCON DCA BINLUP /SET PNT TO TABLE CLA CLL IAC RTL /MAKE 4 AND CLEAR LINK RTL /MAKE 20 AND DCA TEMP /SET COUNT MASK TAD XR3 BINLUP, TAD BINTAB /SUBTRACT SZL DCA XR3 /UPDATE IF OVERFLOW CLA TAD TEMP /SHIFT DIV BIT INTO MASK RAL ISZ BINLUP /TO NEW DIVISOR SNL /DID MASK FINISH ? JMP BINLUP-2 /NO, UPDATE IT CLL RTL /YES, THE END RTL /SHIFT 1 BCD LEFT TAD XR3 /AND ADD REMAINS DCA XR2 CIF CDF 0 JMP% SB2BCD SETUP, JA . STARTD SETX XR0 FLDA 30 /GET RETURN FSTA# GOBAK FLDA% 0,5 /GET PTR TO ARG1 FSTA 3 STARTF FLDA% 3 /USER ARG TO FAC JA SETUP DECIMAL BINTAB, -800 -400 -200 -100 -80 -40 -20 -10 OCTAL BINCON, TAD BINTAB P7400, 7400 P7760, 7760 P1000, F 1000. ORG .-1 XR0, 0 /TRACEBACK AND BCD EXP OVERLAPPED WITH P1000 XR1, 0 /HI MANTISSA BCD EXP BCD2B TEMP XR2, 0 /LOW MANTISSA BCD HI EXP XR3, 0 /TEMP B2BCD LO HI XR4, 0 /TEMP B2BCD LO XR5, 1 /CONSTANT INDEX END