home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug011.arc / TIMER.BAS < prev    next >
BASIC Source File  |  1979-12-31  |  6KB  |  177 lines

  1. 1 REM BASICODE 2 ROUTINES BY HENK WEVERS. FURTHER INFORMATION ABOUT BASICODE
  2. 3 REM NOS, HOBBYSCOOP HILVERSUM. TRANSLATED FROM DUTCH BY:
  3. 5 REM Joe Schramp,
  4. 6 REM for use by UBUG Australia.
  5. 9 PRINT CHR$(26);:WIDTH(255)
  6. 10 GOTO 1000
  7. 20 GOTO 1010
  8. 100 PRINT CHR$(26);:RETURN
  9. 110 REM
  10. 111 IF HO>51 THEN HO=51
  11. 112 IF VE>23 THEN VE=23
  12. 113 PRINT CHR$(27);"=";CHR$(VE+32);CHR$(HO+32);
  13. 115 RETURN
  14. 120 HO=PEEK(&HEF5A):VE=PEEK(&HEF5B)-&HF0
  15. 121 VE=VE*2
  16. 122 IF HO>127 THEN HO=HO-128:VE=VE+1
  17. 123 VE=VE-PEEK(&HEF62):IF VE<0 THEN VE=32+VE
  18. 124 RETURN
  19. 200 IN$=INKEY$:RETURN
  20. 210 GOSUB 200:IF IN$="" THEN 210
  21. 211 RETURN
  22. 250 PRINT CHR$(7);:RETURN
  23. 260 RV=RND(1):RETURN
  24. 270 FR=FRE(2):RETURN
  25. 300 SR$=STR$(SR)
  26. 301 Q7=LEN(SR$):IF Q7=0 THEN RETURN
  27. 302 IF RIGHT$(SR$,1)<>" " THEN 304
  28. 303 SR$=LEFT$(SR$,Q7-1):GOTO 301
  29. 304 IF LEFT$(SR$,1)<>" " THEN RETURN
  30. 305 SR$=RIGHT$(SR$,Q7-1):GOTO 301
  31. 310 Q4=SR:IF CN<>0 THEN 316
  32. 312 SR=INT(SR+.5):GOSUB 300:GOTO 330
  33. 316 Q5=SGN(SR):SR=ABS(SR):Q8=INT(SR):Q9=SR-Q8
  34. 318 FOR Q6=1 TO CN:Q9=Q9*10:NEXT Q6
  35. 320 Q9=INT(Q9+.5):SR=Q9:GOSUB 300
  36. 322 Q9$=RIGHT$("00000000000000000000"+SR$,CN)
  37. 324 IF Q8=0 AND Q9=0 THEN Q5=1
  38. 326 SR=Q8:GOSUB 300:IF Q5=-1 THEN SR$="-"+SR$
  39. 328 SR$=SR$+"."+Q9$
  40. 330 IF LEN(SR$)<=CT THEN 334
  41. 332 SR$=LEFT$("********************",CT):GOTO 340
  42. 334 SR$=RIGHT$("                    "+SR$,CT)
  43. 340 SR=Q4:RETURN
  44. 350 L PRINT SR$;:RETURN
  45. 360 L PRINT:RETURN
  46. 1000 A=500:GOTO 20
  47. 1010 GOTO 6000
  48. 1020 GOSUB 100:GOSUB 5000
  49. 1030 PRINT "         Astable multivibrator":PRINT
  50. 1040 GOSUB 3000:PRINT:PRINT:GOSUB 4000
  51. 1170 GOSUB 100:GOSUB 5000
  52. 1180 PRINT "  Give the required duty-cycle from the"
  53. 1190 PRINT  "  Output at point 3.  this"
  54. 1200 PRINT "  must be between  50% en 100%."
  55. 1210 HO=3:VE=9:GOSUB 110
  56. 1220 PRINT "Duty-cycle in %         ";
  57. 1240 INPUT D
  58. 1250 IF D>0 THEN 1280
  59. 1260 PRINT "* Duty-cycle is not allowed to be negative! *";
  60. 1270 GOTO 1210
  61. 1280 IF D>50 THEN 1310
  62. 1290 PRINT "* pick a duty-cycle larger than 50% ! * ";
  63. 1300 GOTO 1210
  64. 1310 IF D<100 THEN 1340
  65. 1320 PRINT "* Make duty-cycle smaller than 100% ! * "
  66. 1330 GOTO 1210
  67. 1340 D=D/100
  68. 1350 HO=1:VE=10:GOSUB 110
  69. 1360 FOR I=0 TO 1
  70. 1370 PRINT "                                      "
  71. 1380 NEXT
  72. 1390 PRINT "  Give now the required output-       "
  73. 1400 PRINT "  frequency. This has to be between"
  74. 1410 PRINT "  0.1 Hz en 100 kHz."
  75. 1420 HO=3:VE=16:GOSUB 110
  76. 1430 PRINT "Output Frequency in Hz ";
  77. 1450 INPUT F
  78. 1460 IF F>.1 THEN 1520
  79. 1470 PRINT "* pick frequency higher than 0.1 Hz  * "
  80. 1480 GOTO 1420
  81. 1490 PRINT "* pick frequency lower than 100 Khz  *"
  82. 1500 GOTO 1420
  83. 1510 GOTO 1350
  84. 1520 IF F<10 THEN C=.00001:GOTO 1560
  85. 1530 IF F<1000 THEN C=.000001:GOTO 1560
  86. 1540 IF F<100000! THEN C=1E-08:GOTO 1560
  87. 1550 GOTO 1490:REM frequency TO HIGH
  88. 1560 PRINT "                                       "
  89. 1570 FOR I=0 TO 8:PRINT "  Ok";:NEXT
  90. 1580 K1=LOG(2):K2=1/(K1*F*C)
  91. 1590 RB=K2*(1-D)
  92. 1600 RA=K2-2*RB
  93. 1610 R=RB:GOSUB 2000:RB=R1
  94. 1620 R=RA:GOSUB 2000:RA=R1
  95. 1630 GOSUB 100:GOSUB 5000:GOSUB 3000
  96. 1640 K$=""
  97. 1650 IF RA>10000 THEN R1=RA/1000:K$="kilo-"
  98. 1660 PRINT "R1=";R1;K$;"ohm"
  99. 1670 K$="":R2=RB
  100. 1680 IF RB>10000 THEN R2=RB/1000:K$="kilo-"
  101. 1690 PRINT "R2=";R2;K$;"ohm"
  102. 1700 PRINT " C=";C*1E+06;"microfarad"
  103. 1710 PRINT "frequency=";1/(K1*(RA+2*RB)*C);"Hz"
  104. 1720 PRINT "Duty cycle=";100*(RA+RB)/(RA+2*RB);"%";
  105. 1730 GOSUB 4000
  106. 1740 GOSUB 100:GOSUB 5000
  107. 1750 PRINT "This was an  P2000 BASICODE program,"
  108. 1755 PRINT "Translated from Dutch by Joe Schramp,"
  109. 1756 PRINT "For MBUG AUSTRALIA INC."
  110. 1760 END
  111. 1770 :
  112. 2000 F=0:REM  NOT OUTSIDE REACH
  113. 2010 K=0:REM  EXPONENT COUNTER
  114. 2020 IF R<.1 THEN F=1:REM  TO SMALL
  115. 2030 IF R>1E+07 THEN F=1:REM  TO BIG
  116. 2040 R1=R
  117. 2050 REM  LOOK FOR VALUE IN TABLE
  118. 2060 IF R1<=1 THEN 2100
  119. 2070 R1=R1/10:REM  SHIFT COMMA
  120. 2080 K=K+1:REM  COUNT DISPLACEMENT
  121. 2090 GOTO 2060:REM  STILL WITHIN REACH ?
  122. 2100 B=1:REM  POINTER TO ARRAY-START
  123. 2110 E=25:REM  POINTER TO ARRAY-END
  124. 2120 M=INT((B+E)/2):REM  POINTER IN THE MIDDLE OF THE USEFULL AREA
  125. 2130 IF M=B THEN 2170
  126. 2140 IF R1=A(M) THEN 2200
  127. 2150 IF R1<A(M) THEN E=M:GOTO 2120
  128. 2160 IF R1>A(M) THEN B=M:GOTO 2120
  129. 2170 IF (R1-A(B))<(A(E)-R1) THEN R1=A(B):GOTO 2190
  130. 2180 R1=A(E)
  131. 2190 REM  TAKE CLOSE BY
  132. 2200 R1=R1*10^K
  133. 2210 IF R1>10 THEN R1=INT(R1+.5)
  134. 2220 RETURN
  135. 2230 :
  136. 3000 PRINT "           +-----------------+"
  137. 3010 PRINT "           !                 !"
  138. 3020 PRINT " +5V-+-----8                 3---OUTPUT"
  139. 3030 PRINT "     !     !       555       !"
  140. 3040 PRINT "     +-----4                 1---+--GND"
  141. 3050 PRINT "     !     !                 !   !"
  142. 3060 PRINT "     !     +--7--------6--2--+   !"
  143. 3070 PRINT "     !        !        !  !      !"
  144. 3080 PRINT "     ! +----+ ! +----+ !  !  !!C !"
  145. 3090 PRINT "     +-! R1 !-+-! R2 !-+--+--!!--+"
  146. 3100 PRINT "       +----+   +----+       !!"
  147. 3110 RETURN
  148. 3120 :
  149. 4000 HO=15:VE=23:GOSUB 110:PRINT "\ENTER\...";:GOSUB 210
  150. 4010 RETURN
  151. 4020 :
  152. 5000 PRINT:PRINT:PRINT:PRINT:RETURN
  153. 6000 DIM A(25)
  154. 6010 FOR I=1 TO 25
  155. 6020 READ A(I)
  156. 6030 NEXT I
  157. 6040 GOSUB 100:GOSUB 5000
  158. 6050 PRINT " - - -  DE ELECTRONICA DESIGNER  - - -"
  159. 6060 PRINT
  160. 6070 PRINT "   ****    ***    ***    ***    ***"
  161. 6080 PRINT "   *   *  *   *  *   *  *   *  *   *"
  162. 6090 PRINT "   *   *     *   *   *  *   *  *   *"
  163. 6100 PRINT "   ****     *    *   *  *   *  *   *"
  164. 6110 PRINT "   *       *     *   *  *   *  *   *"
  165. 6120 PRINT "   *      *      *   *  *   *  *   *"
  166. 6130 PRINT "   *      *****   ***    ***    ***"
  167. 6140 PRINT
  168. 6150 PRINT "Astable multivibrator with the NE-555."
  169. 6160 PRINT:PRINT "This program calculates the resistances"
  170. 6170 PRINT:PRINT "and the capacitor values in the following scheme"
  171. 6180 GOSUB 4000:GOTO 1020
  172. 6190 :
  173. 30000 REM  STANDARD VALUES
  174. 30010 DATA .1,.11,.12,.13,.15,.16,.18,.2
  175. 30020 DATA .22,.24,.27,.3,.33,.36,.39,.43
  176. 30030 DATA .47,.51,.56,.62,.68,.75,.82,.91,1
  177. 3120 :