home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / misc / fsk / newfsk.bas
BASIC Source File  |  1987-04-19  |  3KB  |  90 lines

  1. 10 CLS: KEY OFF
  2. 20 SCREEN 2
  3. 30 WINDOW (-1000,-80)-(1000,0)
  4. 35 DIM X(200),Y(200)
  5. 40 PRINT:PRINT:PRINT:PRINT:PRINT
  6. 50 PRINT"                ============================================
  7. 60 PRINT"                |                                          |
  8. 70 PRINT"                |                                          |
  9. 80 PRINT"                |    FSK SPECTRUM CALCULATION PROGRAM      |
  10. 90 PRINT"                |                                          |
  11. 100 PRINT"                |                                          |
  12. 110 PRINT"                ============================================
  13. 120 PRINT:PRINT:PRINT:PRINT"FROM HAM RADIO MAGAZINE 12/86
  14. 125 PRINT" ALLOW 30 SECONDS OR SO TO CALCULATE":PRINT"CTRL-BREAK TO QUIT"
  15. 130 PRINT:INPUT "WHAT IS DESIRED BAUD RATE";BR
  16. 140 PRINT:INPUT "WHAT IS DESIRED FREQUENCY SHIFT";SHIFT
  17. 150 GOSUB 340
  18. 160 PRINT:INPUT "Want continuous or discontinuous phase case (C/D)";A$
  19. 165 PRINT"WORKING..."
  20. 170 IF A$ = "D" OR A$ = "d" THEN GOSUB 640: GOTO 210
  21. 180 IF A$ = "C" OR A$="c" THEN GOSUB 430: GOTO 210
  22. 190 REM: error
  23. 200 PRINT:PRINT:PRINT" BOGUS INPUT, KNUCKLEHEAD....try again !
  24. 210 REM:==========================
  25. 220 REM:
  26. 230 REM: this is the plotting part
  27. 240 REM
  28. 250 REM:==========================
  29. 260 CLS
  30. 265 GOSUB 2000
  31. 270 PSET (-1000,-80)
  32. 280 FOR I=1 TO 200
  33. 290 LINE -(X(I),Y(I))
  34. 300 NEXT
  35. 310 GOTO 310
  36. 320 REM:==================================================
  37. 330 REM
  38. 340 REM:program fragment for calculating spectral densities
  39. 350 REM
  40. 360 REM:==================================================
  41. 380 PI=3.14159265#:T=1/BR: W1=9083.3*2*PI:W2=(9083.3+SHIFT)*2*PI:WS=(9083.3+SHIFT/2-1000)*2*PI
  42. 390 AL=(W1+W2)/2:BE=(W2-W1)/2
  43. 400 RETURN
  44. 410 REM:=========================|
  45. 420 REM                          |
  46. 430 REM : CONTINUOUS PHASE CASE  |
  47. 440 REM                          |
  48. 450 REM:=========================|
  49. 460 FOR Z=1 TO 200
  50. 470 W=(2*PI*Z*10)+WS
  51. 480 A=W-W1
  52. 490 B=W-W2
  53. 500 C=W+W1
  54. 510 D=W+W2
  55. 520 E=W-AL
  56. 530 F=W+AL
  57. 540 G=2*SIN(A*T/2)*SIN(A*T/2)*SIN(B*T/2)*SIN(B*T/2)
  58. 550 H=2*SIN(C*T/2)*SIN(C*T/2)*SIN(D*T/2)*SIN(D*T/2)
  59. 560 I=(1/A-1/B)*(1/A-1/B)
  60. 570 J=(1/C-1/D)*(1/C-1/D)
  61. 580 K=T*(1-2*COS(E*T)*COS(BE*T)+COS(BE*T)*COS(BE*T))
  62. 590 L=T*(1-2*COS(F*T)*COS(BE*T)+COS(BE*T)*COS(BE*T))
  63. 600 M=G*I/K+H*J/L
  64. 610 Y(Z)=10*LOG(M)/LOG(10): X(Z)=(Z-100)*10
  65. 620 NEXT Z
  66. 630 RETURN
  67. 631 REM:=================================
  68. 632 REM                                 |
  69. 633 REM: Discontinuous Phase Case       |
  70. 634 REM                                 |
  71. 635 REM:=================================
  72. 640 FOR Z=1 TO 200
  73. 650 A=WS+Z*20*PI-W1:B=WS+Z*20*PI+W1:C=WS+Z*20*PI-W2:D=WS+Z*20*PI+W2
  74. 660 A1=(SIN(A*T/2))*(SIN(A*T/2))
  75. 670 B1=(SIN(B*T/2))*(SIN(B*T/2))
  76. 680 C1=(SIN(C*T/2))*(SIN(C*T/2))
  77. 690 D1=(SIN(D*T/2))*(SIN(D*T/2))
  78. 700 E=A1/(A*A)+B1/(B*B)+C1/(C*C)+D1/(D*D)
  79. 710 Y(Z)=10*LOG(E)/LOG(10): X(Z)=(Z-100)*10
  80. 720 NEXT Z
  81. 730 RETURN
  82. 2000 REM : LINE DRAWING ROUTINE
  83. 2010 FOR Y=-80 TO 0 STEP 10
  84. 2020 LINE(-1000,Y)-(1000,Y)
  85. 2030 NEXT
  86. 2040 FOR X=-1000 TO 1000 STEP 100
  87. 2050 LINE(X,-80)-(X,0)
  88. 2060 NEXT
  89. 2070 RETURN
  90.