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

  1. 100 CLS :KEY OFF :REM "CONVSHYZ"
  2. 110 REM S.NOVAK -1984; REVISED V.HEESEN -1986
  3. 120 PRINT TAB(15);"**** TRANSISTOR PARAMETER CONVERSION PROGRAM ****" :PRINT
  4. 130 DIM R(4),I(4),M(4),A(4),A$(4) :PI=4*ATN(1)
  5. 140 A$(1)="       INPUT PARAMETER   (11)= "
  6. 150 A$(2)="       REVERSE PARAMETER (12)= "
  7. 160 A$(3)="       FOWARD PARAMETER  (21)= "
  8. 170 A$(4)="       OUTPUT PARAMETER  (22)= "
  9. 180 PRINT :BEEP :INPUT "PARAMETERS SUPPLIED?  (Z,Y,H,S,A) ";P$
  10. 190 PRINT :BEEP :INPUT "POLAR FORM (P) or REAL & IMAG.(R) ";R$
  11. 200 PRINT :BEEP :INPUT "PARAMETERS REQUIRED?  (Z,Y,H,S,A) ";S$
  12. 210 IF P$="S" OR S$="S" THEN GOSUB 1180
  13. 220 IF R$="P" THEN PRINT :PRINT "ENTER: MAGNITUDE & PHASE in deg. (M,P)"
  14. 230 IF R$="R" THEN PRINT :PRINT "ENTER: REAL & IMAG. PART  (Re,Imag.)"
  15. 240 FOR K=1 TO 4
  16. 250 PRINT :PRINT A$(K);
  17. 260 BEEP :INPUT R(K),I(K)
  18. 270 IF R$="P" THEN GOSUB 1290
  19. 280 NEXT K
  20. 290 REM MULTIPLY by Zo
  21. 300 IF P$="Y" AND S$="S" THEN GOSUB 1440
  22. 310 REM CALCULATE P12*P21 and DP
  23. 320 R1=R(2) :I1=I(2) :R2=R(3) :I2=I(3)
  24. 330 GOSUB 1200
  25. 340 P=RE :Q=IM :R1=R(1) :I1=I(1) :R2=R(4) :I2=I(4)
  26. 350 GOSUB 1200
  27. 360 R=RE-P :I=IM-Q :R1=R(1)
  28. 370 REM SELECT PARAMETER
  29. 380 IF P$="Z" AND S$="Y" OR P$="Y" AND S$="Z" THEN GOSUB 630
  30. 390 IF P$="A" AND S$="Z" OR P$="Z" AND S$="A" THEN GOSUB 730
  31. 400 IF P$="H" AND S$="Z" OR P$="Z" AND S$="H" THEN GOSUB 870
  32. 410 IF P$="Y" AND S$="S" OR P$="S" AND S$="Y" THEN GOSUB 970
  33. 420 IF P$="H" AND S$="Y" OR P$="Y" AND S$="H" THEN GOSUB 530
  34. 430 REM DUAL CONVERSIONS
  35. 440 IF P$="Y" AND S$="A" THEN 470
  36. 450 IF P$="A" AND S$="Y" THEN 500
  37. 460 GOTO 1560
  38. 470 P$="Z"
  39. 480 GOSUB 630
  40. 490 GOTO 290
  41. 500 P$="Z"
  42. 510 GOSUB 730
  43. 520 GOTO 290
  44. 530 REM CONVERT Y to H or  H to Y
  45. 540 R2=R(1) :I2=I(1) :R1=1 :I1=0 :K=1
  46. 550 GOSUB 1480
  47. 560 R1=-R(2) :I1=-I(2) :K=2
  48. 570 GOSUB 1480
  49. 580 R1=R(3) :I1=I(3) :K=3
  50. 590 GOSUB 1480
  51. 600 R1=R :I1=I :K=4
  52. 610 GOSUB 1480
  53. 620 RETURN
  54. 630 REM CONVERT Y to Z or Z to Y
  55. 640 R3=R(1) :I3=I(1) :R1=R(4) :I1=I(4) :R2=R :I2=I :K=1
  56. 650 GOSUB 1480
  57. 660 R1=-R(2) :I1=-I(2) :K=2
  58. 670 GOSUB 1480
  59. 680 R1=-R(3) :I1=-I(3) :K=3
  60. 690 GOSUB 1480
  61. 700 R1=R3 :I1=I3 :K=4
  62. 710 GOSUB 1480
  63. 720 RETURN
  64. 730 REM CONVERT A to Z or Z to A
  65. 740 R2=R(3)
  66. 750 I2=I(3)
  67. 760 R1=R(1)
  68. 770 I1=I(1)
  69. 780 K=1
  70. 790 GOSUB 1480
  71. 800 R1=R :I1=I :K=2
  72. 810 GOSUB 1480
  73. 820 R1=1 :I1=0 :K=3
  74. 830 GOSUB 1480
  75. 840 R1=R(4) :I1=I(4) :K=4
  76. 850 GOSUB 1480
  77. 860 RETURN
  78. 870 REM CONVERT H to Z or Z to H
  79. 880 R2=R(4) :I2=I(4) :R1=R :I1=I :K=1
  80. 890 GOSUB 1480
  81. 900 R1=R(2) :I1=I(2) :K=2
  82. 910 GOSUB 1480
  83. 920 R1=-R(3) :I1=-I(3) :K=3
  84. 930 GOSUB 1480
  85. 940 R1=1 :I1=0 :K=4
  86. 950 GOSUB 1480
  87. 960 RETURN
  88. 970 REM CONVERT Y to S or S to Y
  89. 980 R3=R(1)
  90. 990 I3=I(1)
  91. 1000 R1=1+R(4)-R(1)-R
  92. 1010 I1=I(4)-I(1)-I
  93. 1020 R2=1+R(4)+R(1)+R
  94. 1030 I2=I(4)+I(1)+I
  95. 1040 IF P$="S" AND S$="Y" THEN R2=R2*ZO
  96. 1050 IF P$="S" AND S$="Y" THEN I2=I2*ZO
  97. 1060 K=1
  98. 1070 GOSUB 1480
  99. 1080 R1=-2*R(2)
  100. 1090 I1=-2*I(2) :K=2
  101. 1100 GOSUB 1480
  102. 1110 R1=-2*R(3)
  103. 1120 I1=-2*I(3) :K=3
  104. 1130 GOSUB 1480
  105. 1140 R1=1+R3-R(4)-R
  106. 1150 I1=I3-I(4)-I :K=4
  107. 1160 GOSUB 1480
  108. 1170 RETURN
  109. 1180 PRINT :BEEP :INPUT "ENTER: IMPEDANCE OF THE LINE (Zo) ";ZO
  110. 1190 RETURN
  111. 1200 REM COMPLEX NUMBER MULITIPLICATION SUBROUTINE
  112. 1210 RE=R1*R2-I1*I2
  113. 1220 IM=I1*R2+R1*I2
  114. 1230 RETURN
  115. 1240 REM COMPLEX NUMBER DIVISION SUBROUTINE
  116. 1250 D=R2^2+I2^2
  117. 1260 RE=(R1*R2+I1*I2)/D
  118. 1270 IM=(I1*R2-R1*I2)/D
  119. 1280 RETURN
  120. 1290 REM POLAR to RECTANGULAR
  121. 1300 A=I(K)
  122. 1310 M=R(K)
  123. 1320 A=A*PI/180
  124. 1330 RE=M*COS(A)
  125. 1340 IM=M*SIN(A)
  126. 1350 R(K)=RE
  127. 1360 I(K)=IM
  128. 1370 RETURN
  129. 1380 REM RECTANGULAR to POLAR
  130. 1390 M=SQR(RE^2+IM^2)
  131. 1400 A=90*(SGN(IM)+(IM=0))
  132. 1410 IF RE=0 THEN 1430
  133. 1420 A=ATN(IM/RE)*180/PI+A*(1-SGN(RE))
  134. 1430 RETURN
  135. 1440 FOR K=1 TO 4
  136. 1450 R(K)=R(K)*ZO :I(K)=I(K)*ZO
  137. 1460 NEXT K
  138. 1470 RETURN
  139. 1480 REM SUBROUTINE to STORE RESULTS
  140. 1490 GOSUB 1240
  141. 1500 R(K)=RE
  142. 1510 I(K)=IM
  143. 1520 GOSUB 1380
  144. 1530 M(K)=M
  145. 1540 A(K)=A
  146. 1550 RETURN
  147. 1560 REM SUBROUTINE to PRINT
  148. 1570 CLS :PRINT TAB(24);"*** CALCULATED PARAMETER = ";S$;" ***" :PRINT
  149. 1580 E=10000 :F=10000 :IF S$="Y" THEN F=10
  150. 1590 FOR K=1 TO 4
  151. 1600 PRINT A$(K)
  152. 1610 PRINT "RE";TAB(10);"IM";TAB(20)"MAG";TAB(30);"ANGLE"
  153. 1620 PRINT INT(R(K)*E)/F ;TAB(10);INT(I(K)*E)/F;TAB(20);INT(M(K)*E)/F;
  154. 1630 PRINT TAB(30);INT(A(K)*100)/100 :PRINT
  155. 1640 NEXT K
  156. 1650 PRINT :BEEP :PRINT "ANOTHER CALCULATION? (Y/N)"
  157. 1660 C$=INKEY$ :IF C$="" THEN 1660
  158. 1670 IF C$="Y" THEN RUN ELSE END
  159. 
  160.