home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
design3
/
convshyz.asc
next >
Wrap
Text File
|
1991-02-28
|
4KB
|
160 lines
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