-18,,/;DSS1/ ; ; CHANGED FLOATING POINT OUTPUT TO 6 SIGNIF. DIGITS (CONDITIONAL ON FPPEMU) ; TO REFLECT SUPPORT FOR FPP EMULATION (FOR 11/40 FIS) ; CONDITIONAL ON FPPEMU (DEFINED IN PREFIX FILE) ; DANIEL STEINBERG 20-FEB-78 ; ; MODIFIED FLOATING POINT OUTPUT ROUTINE (FTOA00) TO PRINT IN STANDARD ; SCIENTIFIC NOTATION (EG. 3.0E14 RATHER THAN 3E14) ; D.S. -306,,/;DSS1/ .IF DF,FPPEMU ;IF FIS...SEVENTH DIGIT IS BAD PRECIS=6 ;# DIGITS OF PRECISION (6 FOR FPP EMULATION) .IFF ; IF FPP...SEVEN DIGITS OK PRECIS=7 .ENDC ; -354,354,/;DSS1/ MOV #PRECIS,R3 ;MAX SIGNIF DIGITS -362,372,/;DSS1/ SOB R3,M.XA5;<- ;LOOP FOR (PRECIS) DIGITS ;NOW CHECK FOR F OR E FORMAT REQUIRED CMP @SP,#PRECIS+1 ;IF NUM>10^PRECIS BGE M.ZEA0 ;JUMP IF E FOR SURE CMP @SP,#1-PRECIS ;IF NUM<10^(-PRECIS) BLT M.ZEA0 ;JUMP IF E FOR SURE TST @SP ;IF 10^0 THRU 10^(PRECIS) BPL .+6 ;-> ;ITS F FOR SURE TST R2 ; I ;BUT NUM<10^0 AND (PRECIS) SIGNIF DIGITS BEQ M.ZEA0 ; I ;ITS E FOR SURE ADD #PRECIS,R2;<- ;MAKE TRAIL BLANK COUNT TO SIGNIF COUNT -406,411,/;DSS1/ M.ZEA0: MOV #1,R3 ;SET CHAR COUNT BEFORE DECIMAL POINT ADD #PRECIS,R2 ;SET TOTAL CHAR COUNT CMP R2,R3 ;ONLY ONE? BGT 1$ INC R2 ;YES...PRINT 3.0E14 INSTEAD OF 3E14 1$: JSR PC,M.XA6 ;OUTPUT A DIGIT, D.P., AND THE REST MOVB #105,(R0)+ ;OUTPUT 'E' MOV R1,R4 ;SAVE TEXT POINTER MOV (SP)+,R1 ;GET EXPONENT DEC R1 ;ADJUST (PRINT ROUTINE MULTIPLIED BY 10) -419,419,/;DSS1/ .IF EQ,PRECIS-7 ;IF 7 DIGIT PRECISION M.FIVD: .FLT4 .00000005 ;FLOATING POINT .5 .ENDC .IF EQ,PRECIS-6 ;IF 6 DIGIT PRECISION M.FIVD: .FLT4 .0000005 ;FLOATING POINT .5 .ENDC -1668,1669,/;DSS1/ MOV ENUDAT,R5 ;POINT TO FREE SPACE /