home *** CD-ROM | disk | FTP | other *** search
- 100 CLS :KEY OFF :REM "CONVSHYZ"
- 110 REM S.NOVAK -1984; REVISED V.HEESEN -1986
- 120 PRINT TAB(15);"**** TRANSISTOR PARAMETER CONVERSION PROGRAM ****" :PRINT
- 130 DIM R(4),I(4),M(4),A(4),A$(4) :PI=4*ATN(1)
- 140 A$(1)=" INPUT PARAMETER (11)= "
- 150 A$(2)=" REVERSE PARAMETER (12)= "
- 160 A$(3)=" FOWARD PARAMETER (21)= "
- 170 A$(4)=" OUTPUT PARAMETER (22)= "
- 180 PRINT :BEEP :INPUT "PARAMETERS SUPPLIED? (Z,Y,H,S,A) ";P$
- 190 PRINT :BEEP :INPUT "POLAR FORM (P) or REAL & IMAG.(R) ";R$
- 200 PRINT :BEEP :INPUT "PARAMETERS REQUIRED? (Z,Y,H,S,A) ";S$
- 210 IF P$="S" OR S$="S" THEN GOSUB 1180
- 220 IF R$="P" THEN PRINT :PRINT "ENTER: MAGNITUDE & PHASE in deg. (M,P)"
- 230 IF R$="R" THEN PRINT :PRINT "ENTER: REAL & IMAG. PART (Re,Imag.)"
- 240 FOR K=1 TO 4
- 250 PRINT :PRINT A$(K);
- 260 BEEP :INPUT R(K),I(K)
- 270 IF R$="P" THEN GOSUB 1290
- 280 NEXT K
- 290 REM MULTIPLY by Zo
- 300 IF P$="Y" AND S$="S" THEN GOSUB 1440
- 310 REM CALCULATE P12*P21 and DP
- 320 R1=R(2) :I1=I(2) :R2=R(3) :I2=I(3)
- 330 GOSUB 1200
- 340 P=RE :Q=IM :R1=R(1) :I1=I(1) :R2=R(4) :I2=I(4)
- 350 GOSUB 1200
- 360 R=RE-P :I=IM-Q :R1=R(1)
- 370 REM SELECT PARAMETER
- 380 IF P$="Z" AND S$="Y" OR P$="Y" AND S$="Z" THEN GOSUB 630
- 390 IF P$="A" AND S$="Z" OR P$="Z" AND S$="A" THEN GOSUB 730
- 400 IF P$="H" AND S$="Z" OR P$="Z" AND S$="H" THEN GOSUB 870
- 410 IF P$="Y" AND S$="S" OR P$="S" AND S$="Y" THEN GOSUB 970
- 420 IF P$="H" AND S$="Y" OR P$="Y" AND S$="H" THEN GOSUB 530
- 430 REM DUAL CONVERSIONS
- 440 IF P$="Y" AND S$="A" THEN 470
- 450 IF P$="A" AND S$="Y" THEN 500
- 460 GOTO 1560
- 470 P$="Z"
- 480 GOSUB 630
- 490 GOTO 290
- 500 P$="Z"
- 510 GOSUB 730
- 520 GOTO 290
- 530 REM CONVERT Y to H or H to Y
- 540 R2=R(1) :I2=I(1) :R1=1 :I1=0 :K=1
- 550 GOSUB 1480
- 560 R1=-R(2) :I1=-I(2) :K=2
- 570 GOSUB 1480
- 580 R1=R(3) :I1=I(3) :K=3
- 590 GOSUB 1480
- 600 R1=R :I1=I :K=4
- 610 GOSUB 1480
- 620 RETURN
- 630 REM CONVERT Y to Z or Z to Y
- 640 R3=R(1) :I3=I(1) :R1=R(4) :I1=I(4) :R2=R :I2=I :K=1
- 650 GOSUB 1480
- 660 R1=-R(2) :I1=-I(2) :K=2
- 670 GOSUB 1480
- 680 R1=-R(3) :I1=-I(3) :K=3
- 690 GOSUB 1480
- 700 R1=R3 :I1=I3 :K=4
- 710 GOSUB 1480
- 720 RETURN
- 730 REM CONVERT A to Z or Z to A
- 740 R2=R(3)
- 750 I2=I(3)
- 760 R1=R(1)
- 770 I1=I(1)
- 780 K=1
- 790 GOSUB 1480
- 800 R1=R :I1=I :K=2
- 810 GOSUB 1480
- 820 R1=1 :I1=0 :K=3
- 830 GOSUB 1480
- 840 R1=R(4) :I1=I(4) :K=4
- 850 GOSUB 1480
- 860 RETURN
- 870 REM CONVERT H to Z or Z to H
- 880 R2=R(4) :I2=I(4) :R1=R :I1=I :K=1
- 890 GOSUB 1480
- 900 R1=R(2) :I1=I(2) :K=2
- 910 GOSUB 1480
- 920 R1=-R(3) :I1=-I(3) :K=3
- 930 GOSUB 1480
- 940 R1=1 :I1=0 :K=4
- 950 GOSUB 1480
- 960 RETURN
- 970 REM CONVERT Y to S or S to Y
- 980 R3=R(1)
- 990 I3=I(1)
- 1000 R1=1+R(4)-R(1)-R
- 1010 I1=I(4)-I(1)-I
- 1020 R2=1+R(4)+R(1)+R
- 1030 I2=I(4)+I(1)+I
- 1040 IF P$="S" AND S$="Y" THEN R2=R2*ZO
- 1050 IF P$="S" AND S$="Y" THEN I2=I2*ZO
- 1060 K=1
- 1070 GOSUB 1480
- 1080 R1=-2*R(2)
- 1090 I1=-2*I(2) :K=2
- 1100 GOSUB 1480
- 1110 R1=-2*R(3)
- 1120 I1=-2*I(3) :K=3
- 1130 GOSUB 1480
- 1140 R1=1+R3-R(4)-R
- 1150 I1=I3-I(4)-I :K=4
- 1160 GOSUB 1480
- 1170 RETURN
- 1180 PRINT :BEEP :INPUT "ENTER: IMPEDANCE OF THE LINE (Zo) ";ZO
- 1190 RETURN
- 1200 REM COMPLEX NUMBER MULITIPLICATION SUBROUTINE
- 1210 RE=R1*R2-I1*I2
- 1220 IM=I1*R2+R1*I2
- 1230 RETURN
- 1240 REM COMPLEX NUMBER DIVISION SUBROUTINE
- 1250 D=R2^2+I2^2
- 1260 RE=(R1*R2+I1*I2)/D
- 1270 IM=(I1*R2-R1*I2)/D
- 1280 RETURN
- 1290 REM POLAR to RECTANGULAR
- 1300 A=I(K)
- 1310 M=R(K)
- 1320 A=A*PI/180
- 1330 RE=M*COS(A)
- 1340 IM=M*SIN(A)
- 1350 R(K)=RE
- 1360 I(K)=IM
- 1370 RETURN
- 1380 REM RECTANGULAR to POLAR
- 1390 M=SQR(RE^2+IM^2)
- 1400 A=90*(SGN(IM)+(IM=0))
- 1410 IF RE=0 THEN 1430
- 1420 A=ATN(IM/RE)*180/PI+A*(1-SGN(RE))
- 1430 RETURN
- 1440 FOR K=1 TO 4
- 1450 R(K)=R(K)*ZO :I(K)=I(K)*ZO
- 1460 NEXT K
- 1470 RETURN
- 1480 REM SUBROUTINE to STORE RESULTS
- 1490 GOSUB 1240
- 1500 R(K)=RE
- 1510 I(K)=IM
- 1520 GOSUB 1380
- 1530 M(K)=M
- 1540 A(K)=A
- 1550 RETURN
- 1560 REM SUBROUTINE to PRINT
- 1570 CLS :PRINT TAB(24);"*** CALCULATED PARAMETER = ";S$;" ***" :PRINT
- 1580 E=10000 :F=10000 :IF S$="Y" THEN F=10
- 1590 FOR K=1 TO 4
- 1600 PRINT A$(K)
- 1610 PRINT "RE";TAB(10);"IM";TAB(20)"MAG";TAB(30);"ANGLE"
- 1620 PRINT INT(R(K)*E)/F ;TAB(10);INT(I(K)*E)/F;TAB(20);INT(M(K)*E)/F;
- 1630 PRINT TAB(30);INT(A(K)*100)/100 :PRINT
- 1640 NEXT K
- 1650 PRINT :BEEP :PRINT "ANOTHER CALCULATION? (Y/N)"
- 1660 C$=INKEY$ :IF C$="" THEN 1660
- 1670 IF C$="Y" THEN RUN ELSE END