home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
games
/
alpha.zip
/
PLAR3W.BAS
< prev
next >
Wrap
BASIC Source File
|
1987-01-01
|
4KB
|
110 lines
10 REM Copyright 1987, Arnold B. Krueger, Grosse Pointe Woods, MI. 48236
20 DEF FNPHLP1(W,WC,D) = ATN(W/WC)
30 DEF FNPHHP1(W,WC,D) = ATN(WC/W)
40 DEF FNPHLP2(W,WC,D) = -ATN( D*W /(WC*(1.000001-(W/WC)^2 ) ) ) + PI*(W>WC)
50 DEF FNPHHP2(W,WC,D) = ATN( D*WC/(W *(1.000001-(WC/W)^2 ) ) ) - PI*(W<WC)
60 DEF FNAMLP1(W,WC,D) = 1 / SQR(1!+(W/WC)^2)
70 DEF FNAMHP1(W,WC,D) = 1 / SQR(1!+(WC/W)^2)
80 DEF FNAMLP2(W,WC,D) = 1 / SQR(1+(W/WC)^4+(D*D-2!)*(W/WC)^2)
90 DEF FNAMHP2(W,WC,D) = 1 / SQR(1+(WC/W)^4+(D*D-2.000001)*(WC/W)^2)
100 DEF FNDBV(AMP) = 20!*LOG(AMP)*LOGCONV
110 DEF FNPHD(RAD) = 180!*RAD/PI
120 DEF FNSUMA(AA,AB,PA,PB) = SQR((AA*SIN(PA)+AB*SIN(PB))^2 + (AA*COS(PA)+AB*COS(PB))^2 )
130 DEF FNSUMPW(AA,AB,PA,PB) = SQR((AA*AA*SIN(PA)+AB*AB*SIN(PB))^2 + (AA*AA*COS(PA)+AB*AB*COS(PB))^2 )
140 DEF FNSUMPN(AA,AB,PA,PB) = AA*SIN(PA)+AB*SIN(PB)
150 DEF FNSUMPD(AA,AB,PA,PB) = AA*COS(PA)+AB*COS(PB)
160 DEF FNDIRF(AA,AB,PA,PB) = ABS((SIN((PA-PB))*(((AA >= AB)*AB/AA)+((AB > AA)*AA/AB) )))
170 PI = ATN(SQR(3!))*3
180 LOGCONV=1!/LOG(10!)
190 LOGCONV=1!/LOG(10!)
200 DIM FREQT(20)
210 FREQT(1)=20:FREQT(2)=22:FREQT(3)=25:FREQT(4)=28:FREQT(5)=32:FREQT(6)=36
220 FREQT(7)=40:FREQT(8)=44:FREQT(9)=50:FREQT(10)=56:FREQT(11)=64:FREQT(12)=72
230 FREQT(13)=80:FREQT(14)=88:FREQT(15)=100:FREQT(16)=112
240 FREQT(17)=128:FREQT(18)=144:FREQT(19)=160:FREQT(20)=180
250 SCREEN 2 : KEY OFF : CLS
260 XS = ( LOG(20000)-LOG(20) )*LOGCONV
270 REM Driver parameters:
280 N$ = "AR3W Model"
290 F1 = 45!
300 Q1 = 1.1
310 F2 = 1200
320 Q2 = 1.1
330 W1 = 2!*PI*F1
340 D1 = 1!/Q1
350 W2 = 2!*PI*F2
360 D2 = 1!/Q2
370 X = 1
380 LINE(52,1)-(639,1)
390 LINE(52,180)-(639,180)
400 FOR X = 52 TO 640 STEP 16
410 FOR ROW = 22.5 TO 157.5 STEP 22.5
420 LINE(X,ROW)-(X+1,ROW)
430 NEXT ROW
440 NEXT X
450 TOGGLE = 0
460 FOR OCT = 0 TO 4
470 DECADE = 10^OCT
480 XSCALE = 75!*(LOG(20!*DECADE)-2.3)
490 LINE(XSCALE,1)-(XSCALE,180)
500 XSCALE = 75!*(LOG( 50!*DECADE)-2.3)
510 LINE(XSCALE,1)-(XSCALE,180)
520 XSCALE = 75!*(LOG(100!*DECADE)-2.3)
530 LINE(XSCALE,1)-(XSCALE,180)
540 XSCALE = XSCALE + 1
550 LINE(XSCALE,1)-(XSCALE,180)
560 FOR NOTE = 1 TO 20
570 F = FREQT(NOTE)*DECADE
580 IF F > 50000! THEN GOTO 790
590 W = 2!*F*PI
600 XP = 75!*(LOG(F)-2.3)
610 Y = FNAMHP2(W,W1,D1)*FNAMLP2(W,W2,D2)
620 YD = FNDBV(Y)
630 YP = (20!-YD)*4.5
640 IF YP<10 THEN YP = 10
650 IF YP>180 THEN YP = 180
660 IF OCT=0 THEN IF NOTE = 1 THEN GOTO 680
670 LINE(XP,YP)-(OLDX,OLDY)
680 REM OLDX = XP
690 OLDY = YP
700 Y = FNPHHP2(W,W1,D2)+FNPHLP2(W,W2,D2)
710 YD = FNPHD(Y)
720 YQ = 90-YD/2
730 IF OCT=0 THEN IF NOTE=1 THEN GOTO 760
740 IF TOGGLE = 0 THEN TOGGLE = 1 ELSE TOGGLE = 0
750 IF TOGGLE = 0 THEN LINE(XP,YQ) - (OLDX,OLDYQ)
760 OLDYQ = YQ
770 OLDX = XP
780 NEXT NOTE
790 NEXT OCT
800 LOCATE 1,1
810 PRINT USING "#### d";180;
820 LOCATE 23,1
830 PRINT USING "#### d";-180;
840 LOCATE 12,1
850 PRINT USING "### dB";0!;
860 LOCATE 6,1
870 PRINT USING "### dB";10!;
880 LOCATE 17,1
890 PRINT USING "### dB";-10!;
900 LOCATE 24,4
910 PRINT USING "### Hz";20!;
920 LOCATE 24,19
930 PRINT USING "### Hz";100!;
940 LOCATE 24,40
950 PRINT USING " ## kHz";1!;
960 LOCATE 24,62
970 PRINT USING "### kHz";10!;
980 LOCATE 24,70
990 PRINT USING "### kHz";20!;
1000 LOCATE 2,40
1010 PRINT USING " & ";N$;
1020 LOCATE 3,40
1030 PRINT USING " &";"Amplitude: Phase: ";
1040 LINE(450,20)-(465,20)
1050 LINE(550,20)-(565,20),,,&HF0F0
1060 LOCATE 4,40
1070 PRINT USING "Fl: ##### Q1: #.## F2: ##### Q2: #.##";F1;Q1;F2;Q2;
1080 LOCATE 2,1
1090 END