U=F+1 AX=U+1 AY=AX+1 AZ=AY+1 ;UNUSED UUOGEN PIT APIT: SKIPN AXPLIF JRST AIN MOVE A,UUOA .IOT USRC,@40 JRST 2,@UUOH UUOGEN IN AIN: MOVE A,UUOA HRROS 40 .IOT 40 SKIPL 40 JRST 2,@UUOH UEOF: MOVE C,[ASCII \EOF?\] ;END OF FILE? JRST LUZ AXUSRO: HLRZ T,C MOVEM T,AXPLIF' JUMPE T,POPJ1 .OPEN USRC,USRO POPJ P, TLO Z,AXPLTF .ACCESS USRC,T AOS (P) POPJ P, AXPLOT: MOVEM XYP,XYPM PUSH SP,SC MOVEM SP,SPM PUSHJ P,PUSHC MOVEM CP,CPM MOVEM DP,DPM AXPL1: TRNE C,40 JRST AXPLT1 ;PLOT A SINGLE AXIS, ETC. PUSHJ P,AXUSRO ;PLOT COORDINATE SYSTEM JRST AXDONE LDB F,[140300,,C] MOVE F,AXPLTC(F) HRRM F,XYCORD MOVEM F,AXF' .PIT A FMPRI A,(200.0) MOVEM A,ORGX .PIT A FMPRI A,(200.0) MOVEM A,ORGY .PIT ORGU .PIT ORGV TLO Z,AXCF LDB F,[250300,,F] PUSHJ P,AXINIT PUSHJ P,APL LDB F,[220300,,AXF] PUSHJ P,AXINIT PUSHJ P,APL JRST AXDONE AXPLT1: LDB F,[60300,,C] JRST @AXPLT(F) AXPLTA: TLZ Z,AXCF SETZM ORGX SETZM ORGY AXPLTB: PUSHJ P,AXUSRO JRST AXDONE LDB F,[170300,,C] ;AXIS CODE PUSHJ P,AXINIT PUSHJ P,APL AXDONE: MOVE DP,DPM MOVE CP,CPM MOVE SP,SPM MOVE XYP,XYPM .CLOSE USRC, TLZ Z,AXPLTF POP SP,SC JRST POPC XYPM: 0 SPM: 0 CPM: 0 DPM: 0 AXPLT: AXPLTA ;TABLE OF COMMANDS AXPLTB COPLTI COPLOT PLTFPT AXDONE AXDONE AXDONE AXINIT: .PIT A TRNE A,77 LDB SC,[600,,A] TRNN A,100 TLZA Z,AXSYMF TLO Z,AXSYMF SETZM HCLOCK TRNE A,200 AOS HCLOCK TRNE A,400 MOVNS HCLOCK SETZM LABEL TRNN A,1000 JRST @AXINT(F) AOS LABEL TRNE A,2000 MOVNS B,LABEL IMULM B,HCLOCK TRNN A,4000 TLZA Z,AXEF TLO Z,AXEF LDB B,[140400,,A] HRRM B,NDECPL JRST @AXINT(F) AXPLTC: 02,,XYC 03,,XLYC 12,,LXYC 13,,LXLYC 46,,RTHC 56,,LRTHC 77,,CPOPJ 77,,CPOPJ AXINT: AXINX AXINLX AXINY AXINLY AXINR AXINLR AXINTH POPJ1 AXIN: .PIT A MOVEM A,UMIN .PIT B MOVEM B,UMAX .PIT C ;DU .PIT D ;LENGTH (IN INCHES) / DU FMPRI D,(200.0) POPJ P, AXINXY: PUSHJ P,AXIN FDVR D,C FDVRI C,(10.0) MOVEM C,DU MOVE E,[DDVTBL,,DIVTBL] BLT E,DIVTBL+3 JRST APLD AXINL: PUSHJ P,AXIN MOVEM C,LDU MOVSI E,-9 AXINLL: MOVE U,LOGF2(E) FMPR U,D SETZM LAXIT(E) CAML U,[80.0] AOSA LAXIT(E) CAML U,[40.0] AOSA LAXIT(E) CAML U,[20.0] AOSA LAXIT(E) CAML U,[8.0] AOS LAXIT(E) AOBJN E,AXINLL PUSHJ P,LOG10 MULI A,400 TSC A,A ASH B,-21-200(A) AOS B ;ROUND HLLZ U,B FSC U,211 ;CHARACTERISTIC HRRZ A,B FSC A,211 ;MANTISSA PUSHJ P,TENEXP MULI A,400 ASH B,-243(A) ;1 THRU 9 MOVE C,LAXIT-1(B) MOVE F,LAXIT MOVEI E,1 MOVEM E,DIVTBL MOVE E,@ILDVTP(F) MOVE F,ILDVTE(F) BLT E,DIVTBL(F) SETOM DIVTBL+1(F) MOVE E,[DIVTBL,,DVTBL] BLT E,DVTBL+1(F) MOVEM B,LGINT CAIE B,1 SKIPN LDU AOS F MOVE A,U PUSHJ P,TENEXP MOVEM A,LGPTEN FSC B,233 FMPR B,A MOVEM B,UMIN FADR B,A FDVR A,IDUT(C) MOVEM A,DU FSC A,-1 FSBR B,A MOVEM B,UMAX2 MOVE A,UMIN POPJ P, IFN 0,[ LOGF1: 0.0 0.3010299957 0.4771212547 0.6020599913 0.6989700043 0.7781512504 0.8450980400 0.9030899870 0.9542425094 LOGF10: 1.0000000000 ] LOGF2: 0.3010299957 0.1760912591 0.1249387366 0.0969100130 0.0791812460 0.0669467896 0.0579919470 0.0511525224 0.0457574906 LAXIT: BLOCK 9 IDUT: 1.0 ;INVERSE DU TABLE 2.0 5.0 10.0 20.0 LDVT00:LDVT10:LDVT42: 1 LDVT22:LDVT32: 5 LDVT43: 1 LDVT33: 5 LDVT11: 2 LDVT20:LDVT30:LDVT40: 1 LDVT41: 1 LDVT21:LDVT31: 1 LDVT44: 2 5 2 ILDVTE: 0 1 2 2 3 ILDVTP: ILDVT0(C) ILDVT1(C) ILDVT2(C) ILDVT3(C) ILDVT4(C) ILDVT0: LDVT00,,DIVTBL+1 ILDVT1: LDVT10,,DIVTBL+1 LDVT11,,DIVTBL+1 ILDVT2: LDVT20,,DIVTBL+1 LDVT21,,DIVTBL+1 LDVT22,,DIVTBL+1 ILDVT3: LDVT30,,DIVTBL+1 LDVT31,,DIVTBL+1 LDVT32,,DIVTBL+1 LDVT33,,DIVTBL+1 ILDVT4: LDVT40,,DIVTBL+1 LDVT41,,DIVTBL+1 LDVT42,,DIVTBL+1 LDVT43,,DIVTBL+1 LDVT44,,DIVTBL+1 AXINX: PUSHJ P,AXINXY TLNN Z,AXCF JRST AXINX1 MOVN A,ORGX FDVR A,D FADR A,ORGU AXINX1: MOVEM A,X0 MOVEM D,XUNITL MOVEI E,XAXCU HRRM E,UCORD POPJ P, AXINY: PUSHJ P,AXINXY TLNN Z,AXCF JRST AXINY1 MOVN A,ORGY FDVR A,D FADR A,ORGV AXINY1: MOVEM A,Y0 MOVEM D,YUNITL MOVEI E,YAXCU HRRM E,UCORD POPJ P, AXINLX: PUSHJ P,AXINL TLNN Z,AXCF JRST AXILX1 MOVE A,ORGU PUSHJ P,LOG10 MOVE E,ORGX FDVR E,D FSBR A,E AXILX1: MOVEM A,X0 MOVEM D,XUNITL MOVEI E,XLGCU HRRM E,UCORD POPJ P, AXINLY: PUSHJ P,AXINL TLNN Z,AXCF JRST AXILY1 MOVE A,ORGV PUSHJ P,LOG10 MOVE E,ORGY FDVR E,D FSBR A,E AXILY1: MOVEM A,Y0 MOVEM D,YUNITL MOVEI E,YLGCU HRRM E,UCORD POPJ P, AXINR: PUSHJ P,AXINXY TLNE Z,AXCF MOVE A,ORGU AXINR1: MOVEM A,R0 MOVEI E,RAXCU AXINR2: HRRM E,UCORD MOVEM D,RUNITL .PIT A MOVE C,A PUSHJ P,COS FMPR A,D MOVEM A,RUNITX MOVE A,C PUSHJ P,SIN FMPR A,D MOVEM A,RUNITY POPJ P, AXINLR: PUSHJ P,AXINL MOVE E,A TLNN Z,AXCF JRST AXILR1 MOVE A,ORGU PUSHJ P,LOG10 FSBR E,A FMPR E,D FADR E,ORGX AXILR1: MOVEM E,X0 MOVEI E,RLGCU JRST AXINR2 AXINTH: .PIT UMIN .PIT UMAX .PIT A TLNN Z,AXCF JRST AXINT1 HRRZ B,XYCORD CAIN B,LRTHC PUSHJ P,LOG10 FSBR A,R0 FMPR A,RUNITL TRNA AXINT1: FMPRI A,(200.0) MOVEM A,RAD TLZ A,600777 MULI A,120 JUMPE A,POPJ1 MOVN B,A HRLI B,THDVTBL+3(B) HRRI B,DIVTBL+1 BLT B,DIVTBL+2(A) MOVEI B,1 MOVEM B,DIVTBL MOVE C,DTH-1(A) MOVEM C,DU MOVEI E,THCORD HRRM E,UCORD JRST APLD COPLLF==AXSYME ;1==>PLOT A LINE ALSO WHEN PLOTTING CHARACTERS COPLPF==AXSYMF ;1==>LEAVE PEN IN A POSITION TO CONTINUE PLTFPT: PUSHJ P,AXUSRO ;PRINT A FLOATING POINT NUMBER JRST AXDONE LDB A,[140400,,C] HRRM A,NDECPL TRNN C,200000 TLZA Z,AXEF TLO Z,AXEF .PIT U MOVE F,[700,,UCHARS-1] PUSHJ P,UCVT MOVE F,[700,,UCHARS-1] PUSHJ P,STPLOT JRST AXDONE PLTCH: 0 ;PLOTTING CHARACTER PLTCHX: 0 PLTCHY: 0 COPLOT: PUSHJ P,AXUSRO ;PLOT LOTS OF POINTS JRST AXDONE PUSHJ P,COPLI .PIT NPTS' .PIT A HLRZM A,DXPTS' HRRZM A,XPTS' .PIT A HLRZM A,DYPTS' HRRZM A,YPTS' SKIPLE NPTS .OPEN USRC,USRO JRST AXDONE TLO Z,AXPLTF COPLT1: .ACCESS USRC,XPTS .IOT USRC,AX .ACCESS USRC,YPTS .IOT USRC,AY PUSHJ P,COPLT MOVE A,DXPTS ADDM A,XPTS MOVE A,DYPTS ADDM A,YPTS SOSE NPTS JRST COPLT1 TLNN Z,COPLPF PUSHJ P,PENUP JRST AXDONE COPLTI: HLRZM C,NPTS PUSHJ P,COPLI COPLII: MOVE A,[-2,,AX] .IOT A JUMPL A,UEOF PUSHJ P,COPLT SOSLE NPTS JRST COPLII PUSHJ P,PENUP JRST AXDONE COPLT: PUSHJ P,XYCORD PUSHJ P,XYFIX SKIPE PLTCH JRST PPLTCH PUSHJ P,GOXY JRST PENDN COPLI: TRNN C,200000 ;INITIALIZE FOR PLOTTING POINTS TLZA Z,COPLLF TLO Z,COPLLF TRNN C,400000 TLZA Z,COPLPF TLO Z,COPLPF LDB B,[110700,,C] MOVEM B,PLTCH JUMPE B,CPOPJ PUSH P,X PUSH P,Y TLO Z,LNGF SETZB X,Y PUSHJ P,CPLOT TLZ Z,LNGF JUMPE X,COPLI1 JUMPN Y,COPLI1 SUB X,SC SUB X,SC MOVE Y,SC IMULI Y,6 COPLI1: ASH X,-1 MOVEM X,PLTCHX ASH Y,-1 MOVEM Y,PLTCHY POP P,Y POP P,X POPJ P, PPLTCH: TLNN Z,COPLLF ;PLOT PLOTTING CHARACTER JRST PPLCH1 PUSHJ P,GOXY PUSHJ P,PENUP MOVE XYP,XYPM PUSHJ P,PUSHXY MOVN C,PLTCHX MOVN D,PLTCHY PUSHJ P,VECTXY SKIPE B,PLTCH PUSHJ P,CPLOT PUSHJ P,POPXY JRST PENDN PPLCH1: PUSHJ P,PENUP ;NO LINE SUB C,PLTCHX SUB D,PLTCHY PUSHJ P,GOXY MOVE B,PLTCH JRST CPLOT APLD: MOVEI F,0 ;SET UP DIVISION TABLE FOR HASH MARKS APLD1: MOVE A,DIVTBL(F) MOVEM A,DVTBL(F) JUMPL A,CPOPJ AOJA F,APLD1 APL: MOVE A,SC FSC A,233 MOVEM A,SCALE APLA: PUSHJ P,PENUP MOVE U,UMIN FSB U,DU PUSHJ P,UCORD MOVEM AX,XM' MOVEM AY,YM' MOVE U,UMIN PUSHJ P,UCORD ;GET X(U),Y(U) PUSHJ P,VPLOT ;GO THERE PUSHJ P,PENDN APL0: PUSH P,AX PUSH P,AY MOVEM U,UM' FAD U,DU PUSHJ P,UCORD JUMPE F,GTINC ;F=O => NO HASH MARKS NOW PUSH P,AX ;CALCULATE DERIVATIVES (SLOPE, CURVATURE) FOR HASH MARKS PUSH P,AY FSBR AX,XM FSBR AY,YM SKIPLE HCLOCK MOVNS AX SKIPGE HCLOCK MOVNS AY PUSH P,AX PUSH P,AY SKIPE HCLOCK JRST GSQ MOVN AX,-5(P) FADRM AX,XM FADR AX,-3(P) MOVN AY,-4(P) FADRM AY,YM FADR AY,-2(P) FMPR AX,YM FMPR AY,XM CAML AX,AY MOVNS -1(P) CAMGE AX,AY MOVNS (P) CAMN AX,AY TLOA Z,AXSYME TLZ Z,AXSYME MOVE AX,-1(P) MOVE AY,(P) GSQ: FMPR AX,AX FMPR AY,AY FADRB AX,AY SQ1: MOVE A,AY FDVRM AX,AY FADR AY,A FSC AY,-1 CAME AY,A JRST SQ1 POP P,AX POP P,AY SKIPGE DVTBL(F) SETOM LBLFLG' FSC F,235 FDVR F,A FMPR F,SCALE FMPR AX,F FMPR AY,F PUSHJ P,VIPLT2 TLNE Z,AXSYME+AXSYMF PUSHJ P,VIPLT2 POP P,AY POP P,AX GTINC: POP P,YM POP P,XM CAMLE U,UMAX JRST PENUP ;DONE PUSHJ P,VPLOT MOVEI F,0 APL1: SOSE DVTBL(F) ;CHECK HASH MARKING JRST APL0 MOVE A,DIVTBL(F) MOVEM A,DVTBL(F) AOJA F,APL1 VPLOT: PUSHJ P,XYFIX JRST GOXY VIPLT2: PUSHJ P,VIPLOT SKIPLE LABEL PUSHJ P,LBL MOVNS AX MOVNS AY PUSHJ P,VIPLOT SKIPGE LABEL JRST LBL POPJ P, VIPLOT: PUSHJ P,XYFIX JRST VECTXY XYFIX: MOVE B,AX MOVE C,AY FAD B,[0.5] FAD C,[0.5] MULI C,400 TSC C,C ASH D,-243(C) MULI B,400 TSC B,B ASH C,-243(B) POPJ P, LBL: AOSE LBLFLG POPJ P, PUSHJ P,PENUP MOVE F,[700,,UCHARS-1] PUSHJ P,UCVT MOVEI B,0 IDPB B,F PUSH P,AX PUSH P,AY PUSH P,U MOVE SP,SPM PUSHJ P,STRLNG MOVEM A,LNGTH' MOVE C,-2(P) MOVE D,-1(P) MOVEI A,0 CAMGE C,D ADDI A,RL MOVNS D CAMGE C,D ADDI A,2*RL MOVE F,[700,,UCHARS-1] PUSHJ P,L0(A) POP P,U POP P,AY POP P,AX POPJ P, STRLNG: PUSH P,X PUSH P,Y TLO Z,LNGF MOVE F,[700,,UCHARS-1] PUSHJ P,STPLOT MOVE A,X MOVE B,Y POP P,Y POP P,X TLZ Z,LNGF SUB A,X SUB B,Y POPJ P, STP1: PUSHJ P,CPLOT STPLOT: ILDB B,F JUMPN B,STP1 POPJ P, AXUSUP: POP SP,SC ;UNSUPERSCRIPT JRST SUBSCR AXSUP: PUSHJ P,SUPSCR ;SUPERSCRIPT PUSH SP,SC ASH SC,1 ADDI SC,1 IDIVI SC,3 POPJ P, RL==13 L0: MOVEI C,2 MOVNI D,3 PUSHJ P,VSCXY PUSHJ P,STPLOT MOVN C,SC IMULI C,2 SUB C,LNGTH MOVE D,SC IMULI D,3 PUSHJ P,VECTXY JRST PENDN LOC L0+RL L1: PUSHJ P,L12 MOVE D,SC IMULI D,2 PUSHJ P,L21 MOVN D,SC IMULI D,2 PUSHJ P,VECTXY JRST PENDN DTH: 0.261799388 ;DO NOT MOVE 0.0872664626 ;THIS 0.0174532925 ;CODE LOC L1+RL L2: PUSHJ P,L12 MOVN D,SC IMULI D,10 PUSHJ P,L21 MOVE D,SC IMULI D,10 PUSHJ P,VECTXY JRST PENDN LOC L2+RL L3: MOVN C,LNGTH MOVN D,SC IMULI D,3 PUSHJ P,VECTXY PUSHJ P,STPLOT MOVEI C,0 MOVEI D,3 PUSHJ P,VSCXY JRST PENDN L12: MOVE C,LNGTH ASH C,-1 ;1/2+-1 SUBM SC,C POPJ P, L21: PUSHJ P,VECTXY PUSHJ P,STPLOT MOVN C,LNGTH ASH C,-1 ;1/2-+1 SUB C,SC POPJ P, UCVT: MOVEI A,AXC HRRM A,CPLOT MOVE C,UM JUMPG C,FP1 JUMPE C,FP1A MOVNS C MOVEI B,"- IDPB B,F FP1: MOVEI B,3 ;NULL CHARACTER IDPB B,F TLNE Z,AXEF JRST FP4 FP1A: MOVEI E,0 FP3: MULI C,400 ASHC D,-243(C) MOVE C,D PUSHJ P,FP7 NDECPL: MOVNI C,. ;(RH)=# DECIMAL PLACES JUMPE C,FP3B MOVEI B,". IDPB B,F FP3A: MOVE D,E MULI D,10. PUSHJ P,FP7B AOJL C,FP3A FP3B: TLNN E,200000 POPJ P, FROUND: MOVE A,F FRND1: LDB B,F CAIN B,". JRST FRND2 CAIN B,3 ;NULL CHARACTER MOVEI B,"0 CAIE B,"9 AOJA B,FRNDED MOVEI B,"0 DPB B,F FRND2: IBP F IBP F IBP F IBP F SOJA F,FRND1 FRNDED: DPB B,F MOVE F,A POPJ P, FP4: MOVEM F,UCVTD CAMGE C,FT TDZA D,D MOVEI D,1 MOVNI A,6 MOVEI E,0 FP4A: ADDI E,1(E) XCT FCP(D) SOSA E FDVR C,@FCP(D) FP4B: AOJN A,FP4A JUMPN D,FP4B1 MOVNS E FMPRI C,(10.0) CAMGE C,FT1 SOJA E,FP4B1 FDVRI C,(10.0) FP4B1: PUSH P,E PUSHJ P,FP3 POP P,C LDB B,UCVTD CAIE B,3 AOJA C,FP4D FP4C: MOVEI B,"* IDPB B,F MOVEI B,"1 IDPB B,F MOVEI B,"0 IDPB B,F MOVEI B,4 ;SUPERSCRIPT IDPB B,F PUSHJ P,FP7S MOVEI D,2 ;UNSUPERSCRIPT JRST FP7C FP4D: MOVEI B,". ;ROUNDED UP TO EXTRA DIGIT IN E MODE IDPB B,UCVTD MOVEI B,"0 IDPB B,UCVTD IBP F IBP F IBP F IBP F SOJA F,FP4C FP7S: JUMPGE C,FP7 MOVNS C MOVEI D,"- IDPB D,F FP7: IDIVI C,10. HRLM D,(P) JUMPE C,FP7A PUSHJ P,FP7 FP7A: HLRZ D,(P) FP7B: TRO D,"0 FP7C: IDPB D,F POPJ P, 1.0^40 1.0^20 1.0^10 1.0^4 1.0^2 FT1: 1.0^1 FT: 1.0^0 1.0^-40 1.0^-20 1.0^-10 1.0^-4 1.0^-2 1.0^-1 FT0: FCP: CAMLE C,FT0(A) CAMGE C,FT(A) UCVTD: 0 ;SAVED BYTE POINTER POINTING TO NULL CHARACTER (3) SCALE: 1.0 HCLOCK: 0 ;1==>HASH MARKS CLOCKWISE, -1==>HASH MARKS COUNTERCLOCKWISE LABEL: 0 ;-1 OR 1=>LABELED AXES, - FOR OPPOSITE HASH MARKS DDVTBL: 1 5 2 -1 THDVTB: 5 3 3 2 -1 DIVTBL: BLOCK 10 DVTBL: BLOCK 10 UCHARS: BLOCK 5 ORGX: 0 ;PLOTTER X COORDINATE OF ORIGIN ORGY: 0 ;PLOTTER Y COORDINATE OF ORIGIN ORGU: 0 ;U COORDINATE OF ORIGIN ORGV: 0 ;V COORDINATE OF ORIGIN UMIN: 0 ;INITIAL U UMAX: 0 ;FINAL U DU: 0 ;DELTA U XYCORD: JRST CPOPJ UCORD: JRST CPOPJ XYC: FSBR AX,X0 FSBR AY,Y0 FMPR AX,XUNITL FMPR AY,YUNITL POPJ P, LXYC: MOVE A,AX PUSHJ P,LOG10 MOVE AX,A JRST XYC XLYC: MOVE A,AY PUSHJ P,LOG10 MOVE AY,A JRST XYC LXLYC: MOVE A,AY PUSHJ P,LOG10 MOVE AY,A JRST LXYC LRTHC: MOVE A,AX PUSHJ P,LOG10 MOVE AX,A JRST RTHC RTHC: FSBR AX,R0 FMPR AX,RUNITL RTHC1: MOVE A,AY PUSHJ P,SIN FMPR A,AX EXCH A,AY PUSHJ P,COS FMPR AX,A FADR AX,ORGX FADR AY,ORGY POPJ P, XLGCU: PUSHJ P,LGCU SKIPA AX,A XAXCU: MOVE AX,U XAXCU1: FSBR AX,X0 FMPR AX,XUNITL MOVE AY,ORGY POPJ P, X0: 0 ;X COORDINATE AT PLOTTER X=0 XUNITL: 0 ;PLOTTER LENGTH (IN STEPS) OF ONE X UNIT YLGCU: PUSHJ P,LGCU SKIPA AY,A YAXCU: MOVE AY,U YAXCU1: FSBR AY,Y0 FMPR AY,YUNITL MOVE AX,ORGX POPJ P, Y0: 0 YUNITL: 0 RLGCU: MOVE A,U PUSHJ P,LOG10 SKIPA AX,A RAXCU: MOVE AX,U FSBR AX,R0 MOVE AY,AX FMPR AX,RUNITX FMPR AY,RUNITY FADR AX,ORGX FADR AY,ORGY POPJ P, R0: 0 RUNITL: 0 RUNITX: 0 RUNITY: 0 THCORD: MOVE AX,RAD MOVE AY,U JRST RTHC1 RAD: 0 ;RADIUS OF THETA AXIS LGCU: MOVE A,U CAMGE U,UMAX2 JRST LOG10 AOS B,LGINT CAIG B,9 JRST LGCU1 MOVEI B,1 MOVEM B,LGINT MOVSI T,(10.0) FMPRM T,LGPTEN LGCU1: MOVE C,LAXIT-1(B) MOVE D,LAXIT MOVEI E,1 MOVEM E,DIVTBL MOVE E,@ILDVTP(D) MOVE D,ILDVTE(D) BLT E,DIVTBL(D) SETOM DIVTBL+1(D) MOVE E,[DVTBL,,DVTBL+1] BLT E,DVTBL+1(D) AOS DVTBL+1(D) CAIE B,1 SKIPN LDU SETOM DVTBL+1(D) MOVE T,LGPTEN FSC B,233 FMPR B,T FADR B,T FDVR T,IDUT(C) MOVEM T,DU FSC T,-1 FSBR B,T MOVEM B,UMAX2 JRST LOG10 UMAX2: 0 ;NEXT PLACE TO SWITCH DIVTBL LDU: 0 ;DU FROM USER. 0==> LABEL EVERY INTEGER LGINT: 0 ;CURRENT INTEGER LGPTEN: 0 ;CURRENT POWER OF TEN LOG: JUMPE A,LOGOF0 ;LOG BASE 2 MOVEM B,LOGT1' ASHC A,-33 FSC A,233 FSBRI A,(128.5) MOVEM A,LOGT2' ASH B,-10 TLC B,200000 MOVE A,B FADR A,[0.707106781187] ;SQRT 2 FSBR B,[0.707106781187] FDVR B,A MOVEM B,LOGT3' FMPR B,B MOVE A,[0.5989786496] FMPR A,B FADR A,[0.9614706323] FMPR A,B FADR A,[2.8853912903] FMPR A,LOGT3 FADR A,LOGT2 SKIPA B,LOGT1 LOGOF0: MOVSI A,400000 POPJ P, LOG10: PUSHJ P,LOG FMPR A,[0.3010299957] ;LOG10 2 POPJ P, LN: PUSHJ P,LOG FMPR A,[0.69314718056] ;LN 2 POPJ P, TENEXP: FMPR A,[2.302585093] EXP: PUSHJ P,EXPM1 FADRI A,(1.0) POPJ P, EXPM1: MOVM T,A CAMG T,[154400,,] POPJ P, FSC A,-1 PUSHJ P,EXPM1 MOVE T,A FADRI T,(2.0) FMPR A,T POPJ P, COS: FADR A,[1.57079632679] ;PI/2 SIN: MOVM T,A ;ARG IN A CAMG T,[.00017] POPJ P, ;SIN X = X, WITHIN 27 BITS FDVRI A,(-3.0) PUSHJ P,SIN ;SIN -X/3 FMPR T,T FSC T,2 FADRI T,(-3.0) FMPRB A,T ;SIN X = 4(SIN -X/3)^3-3(SIN -X/3) POPJ P, ;SIN IN A, SIN OR ABS(SIN) IN T