home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / circdraw / wavegen.bas (.txt) < prev   
Encoding:
GW-BASIC  |  1979-12-31  |  2.8 KB  |  85 lines

  1. 10    REM  ***************************
  2. 20    REM  *        MICRO-CAP        *
  3. 25    REM  *     COPYRIGHT 1982      *
  4. 28    REM  *     WAVEGEN MODULE      *
  5. 30    REM  *   SPECTRUM  SOFTWARE    *
  6. 50    REM  ***************************
  7. 90  DIM VX(101)
  8. 100  KEY OFF
  9. 110  CLS:LOCATE 12:PRINT "PRESS M TO MODIFY THE WAVEFORM CODE ANY OTHER KEY TO GENERATE THE DISK FILE"
  10. 120  T$=INKEY$:IF T$="" THEN 120
  11. 121  PRINT T$:IF T$="M" THEN 2050
  12. 130  CLS:LOCATE 10:INPUT "ENTER TMAX FOR THE WAVEFORM ";TM
  13. 140  PRINT
  14. 150  N=1000
  15. 155  INPUT "ENTER THE FILE # TO SAVE THE WAVEFORM UNDER (0-9) ";XO$
  16. 200  PRINT
  17. 210  PRINT "ENTER THE MAXIMUM PEAK TO PEAK ";:INPUT "AMPLITUDE OF THE WAVEFORM ";PP
  18. 220  REM
  19. 230  IF PP=0 THEN 210
  20. 240  VS=150/PP
  21. 260  DT=TM/N:T= -DT
  22. 270  HS=600/TM
  23. 280  VS= -VS
  24. 290  SCREEN 2
  25. 300  FOR X=0 TO 600 STEP 60:LINE (X,0)-(X,150):NEXT
  26. 310  FOR Y=0 TO 150 STEP 15:LINE (0,Y)-(600,Y):NEXT
  27. 320  REM
  28. 330  FOR L=0 TO N-1
  29. 340  T=T+DT
  30. 350  GOSUB 1000
  31. 359  LOCATE 21,1:PRINT V"               "
  32. 360  GOSUB 2212
  33. 370  X=HS*T:Y=VS*V+75
  34. 380  REM
  35. 390  IF Y>0 AND YS>0 AND Y<159 AND YS<159 THEN LINE(X,Y)-(XS,YS)
  36. 400  XS=X:YS=Y
  37. 410  NEXT
  38. 430  SCREEN 0
  39. 440  REM
  40. 450  REM
  41. 460  CLS:PRINT "TO RETURN TO THE EDITOR, FIRST TYPE "
  42. 461  PRINT "SYSTEM      <ENTER>  THEN,"
  43. 462  PRINT "EDITOR      <ENTER>"
  44. 463  END
  45. 1000  REM  ***************************
  46. 1010  REM  **        USER AREA      **
  47. 1020  REM  **       BEGINS HERE     **
  48. 1030  REM  **   V=WAVEFORM VOLTAGE  **
  49. 1040  REM  **   T=TIME IN SECONDS   **
  50. 1050  REM  **     LINE 1500 IS      **
  51. 1060  REM  **       DEMO CODE       **
  52. 1070  REM  **   REMOVE BEFORE USE   **
  53. 1080  REM  ***************************
  54. 1500  V=5*EXP(-T/1.99E-07)*SIN(T/1.8E-08)
  55. 1940  RETURN
  56. 1950  RETURN
  57. 1960  RETURN
  58. 1970  REM  ***************************
  59. 1980  REM  **       USER AREA       **
  60. 1990  REM  **       ENDS HERE       **
  61. 2000  REM  ***************************
  62. 2010  REM RETURN IN NEXT LINE IS FOR POSSIBILITY THAT USER ZAPS THE REGULAR RETURN FROM GOSUB 1000
  63. 2020  RETURN
  64. 2050  CLS:PRINT "THE USER AREA BEGINS AT LINE 1000 AND ENDS AT 2000."
  65. 2060  PRINT "YOU MAY PLACE ANY BASIC CODE IN THE USER AREA, INCLUDING FUCTIONS, DATA         STATEMENTS,EQUATIONS ETC."
  66. 2070  PRINT "THE USER CODE GENERATES THE WAVEFORM."
  67. 2080  PRINT
  68. 2090  PRINT "AS SUPPLIED THE USER CODE CONTAINS A DEMO FUNCTION WHICH GENERATES AN           EXPONENTIALLY DECAYING SINUSOID, USING LINE 1500."
  69. 2130  PRINT "REMOVE LINE 1500 BEFORE INSTALLING YOUR CODE."
  70. 2140  PRINT "AFTER PLACING YOUR CODE IN THE USER AREA, TYPE RUN, PRESS <ENTER> TWICE"
  71. 2150  PRINT "AND THE PROGRAM WILL ENTER THE GENERATE MODE."
  72. 2170  PRINT:PRINT "REMEMBER, UNLESS YOU SAVE THE BASIC PROGRAM UNDER THE NAME..WAVEGEN AFTER"
  73. 2180  PRINT "MODIFYING THE USER CODE AND BEFORE ACTUALLY GENERATING THE WAVEFORM, YOUR USER  CODE WILL BE LOST."
  74. 2210  END
  75. 2212  J=INT(T*N/TM+0.5):JJ=INT((J)/100):JX=INT((J+1)/100):VX(J-100*JJ)=V
  76. 2213  IF JL=JX THEN RETURN ELSE IF JL=JX THEN RETURN
  77. 2214  JL=JX
  78. 2215  F$="USER"+XO$+STR$(JL-1)
  79. 2220  FILE$="B:"+F$
  80. 2225  LOCATE 22,1:PRINT"SAVING WAVEFORM SECTION ";JL-1
  81. 2230  OPEN FILE$ FOR OUTPUT AS #1
  82. 2260  FOR W=0 TO 99:PRINT #1,VX(W):NEXT
  83. 2270  CLOSE #1
  84. 2280  RETURN
  85.