home *** CD-ROM | disk | FTP | other *** search
- 100 CLS :REM "INTERMOD"
- 110 PRINT TAB(15);"**** INTERMODULATION / HARMONIC PRODUCT TABLE ****" :PRINT
- 120 REM M.GOLDFARB -1984 REVISED by V.HEESEN -1986
- 130 PRINT "THIS PROGRAM COMPUTES the SUM & DIFFERENCE INTERMODULATION PRODUCTS";
- 140 PRINT " from a MIXER" :PRINT "or other NON-LINEAR DEVICE. NOTE: LO & RF";
- 150 PRINT " INPUTS may be SWEPT or WIDEBAND."
- 160 PRINT :BEEP :PRINT "HARD COPY REQUIRED (Y/N)? "
- 170 P$=INKEY$ :IF P$="" THEN 170
- 180 IF P$="Y" THEN 190 ELSE IF P$<>"N" THEN 170
- 190 PRINT :BEEP :INPUT "ENTER: LO FREQUENCY RANGE (MHz) (Low,High)";L1,L2
- 200 PRINT :BEEP :INPUT " RF FREQUENCY RANGE (MHz) (Low,High)";R1,R2
- 210 PRINT :BEEP :INPUT " OUTPUT FREQ. RANGE (MHz) (Low,High)";I1,I2
- 220 PRINT :BEEP :INPUT " MAXIMUM PRODUCT ORDER (N+M)";Q
- 230 L=(L1+L2)/2 'LO Center freq.
- 240 R=(R1+R2)/2 'RF Center freq.
- 250 B2=(R2-R1)/(R*2)
- 260 A1$="Order RF LO Low Product High Product Product in"
- 270 B$="(N+M) (M) (N) (MR-NL) (MR+NL) Output Band"
- 280 C$=" ## ## ## ####### to ####### ####### to ####### \ \"
- 290 D$="_____________________________________________________________________"
- 300 CLS :PRINT TAB(17);"*** INTERMODULATION/HARMONIC PRODUCT TABLE ***" :PRINT
- 310 IF P$="N" THEN 370
- 320 LPRINT TAB(17);"*** INTERMODULATION/HARMONIC PRODUCT TABLE ***" :LPRINT
- 330 LPRINT "LO FREQUENCY RANGE (MHz) =";L1;" to ";L2
- 340 LPRINT "RF FREQUENCY RANGE (MHz) =";R1;" to ";R2
- 350 LPRINT "OUTPUT FREQUENCY RANGE (MHz)=";I1;" to ";I2 :LPRINT :LPRINT
- 360 LPRINT A1$ :LPRINT B$
- 370 PRINT A1$ :PRINT B$ :PRINT D$
- 380 I=8 'PAGE COUNTER
- 390 M=0 'INITIALIZE RF COUNTER
- 400 N=Q 'START LOOP WITH N=MAX.ORDER
- 410 GOSUB 690 'CALCULATE PRODUCTS FOR GIVEN ORDER "Q"
- 420 A$="N" :REM TEST FOR SPUR IN THE OUTPUT BAND
- 430 IF U1>=I1 AND U1<=I2 THEN A$="Y"
- 440 IF U2>=I1 AND U2<=I2 THEN A$="Y"
- 450 IF U1>=I1 AND U2<=I2 THEN A$="Y"
- 460 IF U1<=I1 AND U2>=I2 THEN A$="Y"
- 470 IF M=1 AND N=1 THEN A$="OUTPUT"
- 480 IF N+M=4 THEN PRINT :I=I-1
- 490 IF N+M=4 AND P$="Y" THEN LPRINT
- 500 IF I=0 THEN PRINT :INPUT "PRESS <ENTER> TO CONTINUE";X$
- 510 IF I>0 THEN 560
- 520 CLS
- 530 PRINT A1$ :PRINT B$ :PRINT D$
- 540 PRINT :I=8
- 550 IF P$="Y" THEN LPRINT
- 560 PRINT USING C$;N+M,M,N,U1,U2,V1,V2,A$
- 570 IF P$="Y" THEN LPRINT USING C$;N+M,M,N,U1,U2,V1,V2,A$
- 580 I=I-1
- 590 N=N-1
- 600 IF M=0 AND N=0 THEN 620
- 610 IF N>=0 THEN 410
- 620 M=M+1 :N=Q-M
- 630 PRINT
- 640 IF M<=Q THEN 410
- 650 PRINT :IF P$="Y" THEN LPRINT CHR$(10)
- 660 PRINT :BEEP :PRINT "CONTINUE (Y/N)?"
- 670 E$=INKEY$ :IF E$="" THEN 670
- 680 IF E$="Y" THEN RUN ELSE IF E$<>"N" THEN 670 ELSE END
- 690 REM SUBROUTINE :CALCSPUR
- 700 IF M*R>=N*L THEN X=1 ELSE X=0
- 710 Y=0
- 720 IF X=0 AND N*L1>M*R2 THEN Y=1
- 730 IF X=1 AND M*R1>N*L2 THEN Y=1
- 740 IF Y=0 THEN U1=0
- 750 IF Y=1 AND X=0 THEN U1=N*L1-M*R2
- 760 IF Y=1 AND X=1 THEN U1=M*R1-N*L2
- 770 IF X=0 THEN U2=N*L2-M*R1 ELSE U2=M*R2-N*L1
- 780 V1=M*R1+N*L1
- 790 V2=M*R2+N*L2
- 800 IF M=0 THEN U1=N*L1
- 810 IF N=0 THEN U1=M*R1
- 820 RETURN