ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

226 lines
5.4 KiB

  1. 10 PRINT "PROGRAM FILE 46: INTERACTION OF CONTROL STATEMENTS WITH"
  2. 20 PRINT " THE FOR-STATEMENT."
  3. 30 PRINT " ANSI STANDARD 11.2, 11.4, 10.2, 10.4"
  4. 40 PRINT
  5. 50 PRINT "SECTION 46.1: INTERACTION OF GOSUB-STATEMENT WITH"
  6. 60 PRINT " THE FOR-STATEMENT."
  7. 70 PRINT
  8. 80 PRINT "THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXPECTED"
  9. 90 PRINT "FROM WITHIN A FOR-BLOCK."
  10. 100 PRINT
  11. 110 PRINT " BEGIN TEST."
  12. 120 LET A1=8
  13. 130 LET B1=-5
  14. 140 LET C1=-3
  15. 150 LET T2=4
  16. 160 PRINT
  17. 170 PRINT "CONTROL VARIABLE:"
  18. 180 PRINT "SHOULD BE","ACTUAL","RESULT"
  19. 190 LET A2=A1
  20. 200 LET B2=B1
  21. 210 LET C2=C1
  22. 220 LET I2=A2
  23. 230 REM S1 IS ERROR SWITCH
  24. 240 LET S1=0
  25. 250 REM T1 IS LOOP COUNT
  26. 260 LET T1=0
  27. 270 FOR I1=A1 TO B1 STEP C1
  28. 280 LET T1=T1+1
  29. 290 LET M$=" OK "
  30. 300 IF I1=I2 THEN 330
  31. 310 LET M$="FAILED"
  32. 320 LET S1=1
  33. 330 PRINT I2,I1,M$
  34. 340 LET T9=99
  35. 350 GOSUB 650
  36. 360 IF T9=9 THEN 390
  37. 370 PRINT "GOSUB FAILED TO TAKE EFFECT"
  38. 380 LET S1=1
  39. 390 REM END GOSUB TEST
  40. 400 LET I2=I2-1
  41. 410 LET I2=I2+C2
  42. 420 NEXT I1
  43. 430 PRINT "LOOP EXITED"
  44. 450 GOSUB 6000
  45. 490 LET M$=" OK "
  46. 500 IF T1=T2 THEN 530
  47. 510 LET M$="FAILED"
  48. 520 LET S1=1
  49. 530 PRINT
  50. 540 PRINT "NO. TIMES THROUGH LOOP:"
  51. 550 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$
  52. 560 PRINT
  53. 570 IF S1=0 THEN 600
  54. 580 PRINT "*** TEST FAILED ***"
  55. 590 GOTO 610
  56. 600 PRINT "*** TEST PASSED ***"
  57. 610 PRINT
  58. 620 PRINT " END TEST."
  59. 630 PRINT
  60. 640 GOTO 690
  61. 650 REM SUBROUTINE FROM FIRST SECTION
  62. 660 LET T9=9
  63. 670 LET I1=I1-1
  64. 680 RETURN
  65. 690 REM END OF CALLED-FROM-FOR-BLOCK SUBROUTINE
  66. 700 PRINT "SECTION 46.2: FOR-LOOPS WITH SAME CONTROL-VARIABLE"
  67. 710 PRINT " NESTED DYNAMICALLY WITH GOSUB."
  68. 720 PRINT
  69. 730 PRINT "THIS SECTION TESTS THAT A GOSUB ROUTINE CAN BE EXECUTED"
  70. 740 PRINT "FROM WITHIN A FOR-BLOCK AND THAT THE SUBROUTINE MAY ITSELF"
  71. 750 PRINT "CONTAIN A FOR-BLOCK. IF THE TWO FOR-BLOCKS USE THE SAME"
  72. 760 PRINT "CONTROL-VARIABLE, THE ORIGINAL VALUE IS LOST."
  73. 770 PRINT
  74. 780 PRINT " BEGIN TEST."
  75. 790 LET A1=8
  76. 800 LET B1=-5
  77. 810 LET C1=-3
  78. 820 LET T2=1
  79. 830 LET T4=2
  80. 840 PRINT
  81. 850 PRINT "CONTROL VARIABLE:"
  82. 860 PRINT "SHOULD BE","ACTUAL","RESULT"
  83. 870 LET A2=A1
  84. 880 LET B2=B1
  85. 890 LET C2=C1
  86. 900 LET I2=A2
  87. 910 REM S1 IS ERROR SWITCH
  88. 920 LET S1=0
  89. 930 REM T1 IS LOOP COUNT
  90. 940 LET T1=0
  91. 950 PRINT "ENTERING OUTER LOOP"
  92. 960 FOR I1=A1 TO B1 STEP C1
  93. 970 LET T1=T1+1
  94. 990 GOSUB 6000
  95. 1030 GOSUB 1360
  96. 1040 LET I2=I2+C2
  97. 1050 NEXT I1
  98. 1060 PRINT "OUTER LOOP EXITED"
  99. 1080 GOSUB 6000
  100. 1120 LET M$=" OK "
  101. 1130 IF T3=T4 THEN 1160
  102. 1140 LET M$="FAILED"
  103. 1150 LET S1=1
  104. 1160 PRINT
  105. 1170 PRINT "NO. TIMES THROUGH INNER LOOP:"
  106. 1180 PRINT "SHOULD BE: ";T4;" ACTUAL: ";T3;" RESULT: ";M$
  107. 1190 PRINT
  108. 1200 LET M$=" OK "
  109. 1210 IF T1=T2 THEN 1240
  110. 1220 LET M$="FAILED"
  111. 1230 LET S1=1
  112. 1240 PRINT
  113. 1250 PRINT "NO. TIMES THROUGH OUTER LOOP:"
  114. 1260 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$
  115. 1270 PRINT
  116. 1280 IF S1=0 THEN 1310
  117. 1290 PRINT "*** TEST FAILED ***"
  118. 1300 GOTO 1320
  119. 1310 PRINT "*** TEST PASSED ***"
  120. 1320 PRINT
  121. 1330 PRINT " END TEST."
  122. 1340 PRINT
  123. 1350 GOTO 1570
  124. 1360 REM SUBROUTINE FROM SECOND SECTION
  125. 1370 LET I2=-10
  126. 1380 REM T3 IS LOOP COUNT
  127. 1390 LET T3=0
  128. 1400 PRINT "ENTERING INNER LOOP"
  129. 1410 FOR I1=-10 TO -7 STEP 2
  130. 1420 LET T3=T3+1
  131. 1440 GOSUB 6000
  132. 1480 LET I2=I2+2
  133. 1490 NEXT I1
  134. 1500 PRINT "INNER LOOP EXITED"
  135. 1520 GOSUB 6000
  136. 1560 RETURN
  137. 1570 REM END OF CALLED-FROM-FOR-BLOCK SUBROUTINE
  138. 1580 PRINT
  139. 1590 PRINT "SECTION 46.3 CONTROL-STATEMENT JUMPS OUT OF FOR-BLOCK."
  140. 1600 PRINT
  141. 1610 PRINT "THIS SECTION TESTS THAT YOU CAN JUMP OUT OF A FOR-BLOCK"
  142. 1620 PRINT "AND THAT THE CONTROL-VARIABLE RETAINS ITS VALUE WHEN"
  143. 1625 PRINT "THIS HAPPENS."
  144. 1630 PRINT
  145. 1640 PRINT " BEGIN TEST."
  146. 1650 PRINT
  147. 1655 LET S1=0
  148. 1660 LET A1=33
  149. 1670 LET B1=66
  150. 1680 LET C1=4
  151. 1690 LET I2=A1
  152. 1700 LET T2=8
  153. 1703 PRINT "LOOP IS: FOR I1=";A1;" TO ";B1;" STEP ";C1
  154. 1707 PRINT
  155. 1710 PRINT "CONTROL VARIABLE:"
  156. 1720 PRINT "SHOULD BE","ACTUAL","RESULT"
  157. 1740 LET T1=0
  158. 1750 FOR I1=A1 TO B1 STEP C1
  159. 1760 LET T1=T1+1
  160. 1770 GOSUB 6000
  161. 1780 IF I2 < 60 THEN 1790
  162. 1785 GO TO 1850
  163. 1790 LET I2=I2+C1
  164. 1800 NEXT I1
  165. 1810 PRINT "NORMAL EXIT FROM FOR-BLOCK: INCORRECT."
  166. 1820 LET S1=1
  167. 1830 GOTO 1855
  168. 1850 PRINT "JUMPED OUT OF LOOP"
  169. 1855 GOSUB 6000
  170. 1860 LET M$=" OK "
  171. 1870 IF T1=T2 THEN 1900
  172. 1880 LET M$="FAILED"
  173. 1890 LET S1=1
  174. 1900 PRINT
  175. 1910 PRINT "NO. TIMES THROUGH LOOP:"
  176. 1920 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$
  177. 1930 PRINT
  178. 1940 PRINT "--------------------------------------"
  179. 1950 PRINT
  180. 2000 LET A1=7
  181. 2010 LET B1=7
  182. 2020 LET C1=0
  183. 2030 LET I2=A1
  184. 2040 LET T2=5
  185. 2050 PRINT "LOOP IS: FOR I1=";A1;" TO ";B1;" STEP ";C1
  186. 2060 PRINT
  187. 2070 PRINT "CONTROL VARIABLE:"
  188. 2080 PRINT "SHOULD BE","ACTUAL","RESULT"
  189. 2090 LET T1=0
  190. 2100 FOR I1=A1 TO B1 STEP C1
  191. 2110 LET T1=T1+1
  192. 2120 GOSUB 6000
  193. 2130 IF T1 > 4.5 THEN 2190
  194. 2140 LET I2=I2+C1
  195. 2150 NEXT I1
  196. 2160 PRINT "NORMAL EXIT FROM FOR-BLOCK: INCORRECT."
  197. 2170 LET S1=1
  198. 2180 GOTO 2200
  199. 2190 PRINT "JUMPED OUT OF LOOP"
  200. 2200 GOSUB 6000
  201. 2210 LET M$=" OK "
  202. 2220 IF T1=T2 THEN 2250
  203. 2230 LET M$="FAILED"
  204. 2240 LET S1=1
  205. 2250 PRINT
  206. 2260 PRINT "NO. TIMES THROUGH LOOP:"
  207. 2270 PRINT "SHOULD BE: ";T2;" ACTUAL: ";T1;" RESULT: ";M$
  208. 2280 PRINT
  209. 3000 IF S1=0 THEN 3030
  210. 3010 PRINT "*** TEST FAILED ***"
  211. 3020 GOTO 3040
  212. 3030 PRINT "*** TEST PASSED ***"
  213. 3040 PRINT
  214. 3050 PRINT " END TEST."
  215. 3060 PRINT
  216. 3070 PRINT "END PROGRAM 46"
  217. 3080 STOP
  218. 6000 REM SUBROUTINE TO CHECK THAT I1=I2
  219. 6010 LET M$=" OK "
  220. 6020 IF I1=I2 THEN 6050
  221. 6030 LET M$="FAILED"
  222. 6040 LET S1=1
  223. 6050 PRINT I2,I1,M$
  224. 6060 RETURN
  225. 6070 END