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.
 
 
 
 
 
 

129 lines
2.8 KiB

  1. 10 PRINT "PROGRAM FILE 85: GENERAL CAPABILITIES OF GOSUB/RETURN."
  2. 20 PRINT " ANSI STANDARD 10.4"
  3. 30 PRINT
  4. 40 PRINT "SECTION 85.1: SIMPLE NESTING OF GOSUBS."
  5. 50 PRINT
  6. 60 PRINT "THIS SECTION TESTS THAT SUBROUTINES MAY CALL ONE ANOTHER"
  7. 70 PRINT "AND THAT A SUBROUTINE MAY BE CALLED FROM SEVERAL PLACES."
  8. 80 PRINT
  9. 90 PRINT " BEGIN TEST."
  10. 100 PRINT
  11. 400 LET F=0
  12. 500 LET X=0
  13. 510 GOSUB 570
  14. 520 IF X=11 THEN 530
  15. 525 LET F=1
  16. 530 LET X=0
  17. 540 GOSUB 600
  18. 550 IF X=8 THEN 560
  19. 555 LET F=1
  20. 560 GOTO 700
  21. 570 LET X=X+8
  22. 580 GOSUB 640
  23. 590 RETURN
  24. 600 GOSUB 640
  25. 610 GOSUB 670
  26. 620 LET X=X+4
  27. 630 RETURN
  28. 640 LET X=X+2
  29. 650 GOSUB 670
  30. 660 RETURN
  31. 670 LET X=X+1
  32. 680 RETURN
  33. 700 PRINT
  34. 710 IF F=0 THEN 740
  35. 720 PRINT "*** TEST FAILED ***"
  36. 730 GOTO 750
  37. 740 PRINT "*** TEST PASSED ***"
  38. 750 PRINT
  39. 1000 PRINT " END TEST."
  40. 1010 PRINT
  41. 1020 PRINT
  42. 1030 PRINT "SECTION 85.2: STACKING OF RETURN ADDRESSES."
  43. 1040 PRINT
  44. 1050 PRINT "THIS SECTION TESTS THAT RETURN ADDRESSES ARE PROPERLY"
  45. 1060 PRINT "STACKED BY GOSUBS (INCLUDING SEVERAL EXECUTIONS OF THE"
  46. 1070 PRINT "SAME GOSUB) AND UNSTACKED BY CORRESPONDING RETURNS."
  47. 1080 PRINT
  48. 1090 PRINT " BEGIN TEST."
  49. 1100 PRINT
  50. 1150 LET F=0
  51. 1200 LET I0=3
  52. 1210 LET J0=4
  53. 1220 GOSUB 1500
  54. 1230 IF K0=4 THEN 1250
  55. 1240 LET F=1
  56. 1250 LET I0=2
  57. 1260 LET J0=7
  58. 1270 GOSUB 1500
  59. 1280 IF K0=21 THEN 1300
  60. 1290 LET F=1
  61. 1300 LET I0=4
  62. 1310 LET J0=8
  63. 1320 GOSUB 1500
  64. 1330 IF K0=70 THEN 1350
  65. 1340 LET F=1
  66. 1350 GOTO 1900
  67. 1500 REM TEST RECURSIVE USE OF GOSUB
  68. 1510 LET L9=0
  69. 1520 LET M0=0
  70. 1540 GOSUB 1570
  71. 1560 RETURN
  72. 1570 REM BINOMIAL COEFFICIENT SUBROUTINE
  73. 1580 REM FIND K0=BIN(I0,J0)
  74. 1590 REM ADD 1 TO LEVEL-COUNTER (L9) AND SAVE STATE
  75. 1600 LET L9=L9+1
  76. 1610 LET M(L9)=M0
  77. 1620 LET I(L9)=I0
  78. 1630 LET J(L9)=J0
  79. 1640 IF I0=0 THEN 1670
  80. 1650 IF I0=J0 THEN 1670
  81. 1660 GOTO 1740
  82. 1670 LET K0=1
  83. 1680 REM RESTORE STATE
  84. 1690 LET I0=I(L9)
  85. 1700 LET J0=J(L9)
  86. 1710 LET M0=M(L9)
  87. 1720 LET L9=L9-1
  88. 1730 RETURN
  89. 1740 REM BIN(I0,J0)=BIN(I0,J0-1)+BIN(I0-1,J0-1)
  90. 1750 LET J0=J0-1
  91. 1760 GOSUB 1570
  92. 1770 LET M0=K0
  93. 1780 LET I0=I0-1
  94. 1790 GOSUB 1570
  95. 1800 LET K0=K0+M0
  96. 1810 REM RESTORE STATE
  97. 1820 LET I0=I(L9)
  98. 1830 LET J0=J(L9)
  99. 1840 LET M0=M(L9)
  100. 1850 LET L9=L9-1
  101. 1860 RETURN
  102. 1900 PRINT
  103. 1910 IF F=0 THEN 1940
  104. 1920 PRINT "*** TEST FAILED ***"
  105. 1930 GOTO 1950
  106. 1940 PRINT "*** TEST PASSED ***"
  107. 1950 PRINT
  108. 2000 PRINT " END TEST."
  109. 2010 PRINT
  110. 2020 PRINT
  111. 2030 PRINT "SECTION 85.3: GOSUB WITHOUT RETURN."
  112. 2040 PRINT
  113. 2050 PRINT "THIS SECTION TESTS THAT PROGRAM EXECUTION MAY VALIDLY"
  114. 2060 PRINT "TERMINATE EVEN THOUGH MORE GOSUBS HAVE BEEN EXECUTED "
  115. 2070 PRINT "THAN RETURNS."
  116. 2080 PRINT
  117. 2090 PRINT " BEGIN TEST."
  118. 2100 PRINT
  119. 2110 GOSUB 2200
  120. 2120 PRINT "*** TEST FAILED ***"
  121. 2130 GOTO 2990
  122. 2200 PRINT "IF PROGRAM TERMINATES NORMALLY, THEN"
  123. 2220 PRINT "*** TEST PASSED ***"
  124. 2990 PRINT
  125. 3000 PRINT " END TEST."
  126. 3010 PRINT
  127. 3020 PRINT "END PROGRAM 85"
  128. 4000 END